2017-09-20 4 views
1

Die Frage neu zu schreiben, da benannte Erfassungsgruppen nicht das Hauptproblem sind.Javascript Regex Ungültige Gruppe

Ich habe die following regex now:

/([a-zA-Z ]*)([0-9]*)/g 

Der Code arbeitet jetzt in Ordnung, aber var m = /([a-zA-Z ]*)([0-9]*)/g.exec('Ashok : 9830011245') ist mir nur die Ashok als Ergebnis.

m[0]: "Ashok" 
m[1]: "Ashok" 
m[2]: "" 

Probe Strings Ich brauche es zu arbeiten:

var strings = [ 
"Ashok : 9812340245", 
"Amit Singh :\nChakmir 9013123427\n\nHitendra Singh:\n\nM. : 9612348943", 
"ANIL AGARWAL : \n09331234728\n09812340442\nMAYANK AGARWAL : \n09123416042", 
"JAGDISH SINGH :  098123452187 \n09830111234", 
"MD QYAMUDDIN : 09433186333,\n09477215123\nMD TAJUDDIN : \n09831429111\nGYASUDDIN ANSARI :\n08961383686 \nMD BABUDDIN : \n09433336456 \n09903568555\nJAWE", 
"Viay Singh : 9330938789,\nBijay Singh : 9330938222", 
"Nilu :   09830161000,\n09331863222,\n09830071333,\nSantosh Upadhayay :  09831379555,\n09331727858,\n09830593322" 
]; 

Bitte führen.

+0

JS Regex-Engine einfangenden Gruppen nicht genannt unterstützt. –

+0

* 'unterstützt keine Namen einfangenden Gruppen' * noch: p https://github.com/tc39/proposal-regexp-named-groups –

+0

@ WiktorStribiżew Ich habe den Namen entfernt, aber jetzt gibt meine Exec-Funktion die numerische Gruppe nicht zurück Wert überhaupt. Nach dem Entfernen meiner benannten Gruppen lautet die neue Regex:/([a-zA-Z] *) ([0-9] *)/g. –

Antwort

1

Es scheint, dass Sie alle Teil Sie mit

benötigen extrahieren kann
/^([^:0-9\n]+)\s*(?::\s*)?([0-9]*)/gm 

die regex demo See.

Einzelheiten

  • ^ - Beginn der Linie (als m ermöglicht es den mehrzeiligen Modus)
  • ([^:0-9\n]+)-1 oder mehr Zeichen andere als :, Ziffern und Newline
  • \s* - 1 oder mehr Leerzeichen
  • (?::\s*)? - eine Option al-Sequenz : und 0+ Leerzeichen
  • ([0-9]*) - Null oder mehr Ziffern.

JS Demo:

var strings = [ 
 
"Ashok : 9812340245", 
 
"Amit Singh :\nChakmir 9013123427\n\nHitendra Singh:\n\nM. : 9612348943", 
 
"ANIL AGARWAL : \n09331234728\n09812340442\nMAYANK AGARWAL : \n09123416042", 
 
"JAGDISH SINGH :  098123452187 \n09830111234", 
 
"MD QYAMUDDIN : 09433186333,\n09477215123\nMD TAJUDDIN : \n09831429111\nGYASUDDIN ANSARI :\n08961383686 \nMD BABUDDIN : \n09433336456 \n09903568555\nJAWE", 
 
"Viay Singh : 9330938789,\nBijay Singh : 9330938222", 
 
"Nilu :   09830161000,\n09331863222,\n09830071333,\nSantosh Upadhayay :  09831379555,\n09331727858,\n09830593322" 
 
]; 
 

 
var regex = /^([^:0-9\n]+)\s*(?::\s*)?([0-9]*)/gm; 
 
for (var s of strings) { 
 
    console.log("Looking in: ", s, "\n--------------------------"); 
 
\t console.log(s.match(regex)); 
 
} 
 
// To output groups: 
 
console.log("====Outputting groups===="); 
 
for (var s of strings) { 
 
\t while(m=regex.exec(s)) 
 
    console.log(m[1].trim(), ";", m[2]); 
 
}