Ich habe eine Zeichenfolge, die aus meinem Namen christiancattano
und ein regulärer Ausdruck Suchmuster als solcheRegex101 und Js regex Suche zeigt unterschiedliche Ergebnisse
/(cattano|cattan|attano|chris|catta|attan|ttano|chri|hris|catt|atta|ttan|tano|chr|hri|ris|cat|att|tta|tan|ano)+/ig
In regex101 definiert, wenn ich meine Suchmuster in der oberen Leiste eingeben, und geben Sie wörtlich, christiancattano
in die Test-String-Box wird es hightlight chris
und cattano
. Das ist das Verhalten, das ich erwarte.
In meinem Javascript-Code, wenn ich die folgenden Zeilen
var regExPattern: string = '(cattano|cattan|attano|chris|catta|attan|ttano|chri|hris|catt|atta|ttan|tano|chr|hri|ris|cat|att|tta|tan|ano)+';
var regExObj: RegExp = new RegExp(regExPattern, 'g');
var match: string[] = regExObj.exec('christiancattano');
console.log(`match: ${match}`);
I erhalten diese Ausgabe
match: chris,chris
Warum ist es, dass regex101 zeigt meine Matches zu sein, was ich erwarte, laufen, chris
und cattano
, aber Mein Javascript-Code erzeugt ein anderes Ergebnis?
Verwenden 'match':' 'christiancattano'.match (regExObj) ' –
In Javascript, wenn Sie ein ausführen RegExp mit dem 'g' Modifier, es gibt nur ein Spiel nach dem anderen zurück. Sie müssen es in einer Schleife aufrufen, um alle Übereinstimmungen zu erhalten. Entferne den Modifikator. – Barmar
@ WiktorStribiżew mein Mann! Du hast es schon wieder getan! Ich danke dir sehr! Ich habe gerade die Unterschiede zwischen string.match() und regex.exec() gelesen und sehe, wo ich falsch gelaufen bin, als ich versuchte, eine Zeichenfolge [] meiner Übereinstimmungen zu erhalten. Vielen Dank noch einmal für Ihre Hilfe heute! – Chris