2017-03-30 2 views
1

Ich versuche, diesen Namen Validierung Regex funktioniert, aber habe Probleme. Ich habe sichergestellt, dass ich das Unicode-Addon für regexp habe, aber es scheint nicht zu funktionieren. Dieser Regex funktioniert mit php pcre regex.XRegExp gibt mit dem Unicode-Check false false zurück.

XRegExp ("^ [a-zA-Z \ s, .'- \ pL] + $") .test ('á');

Das obige gibt false zurück. Ich habe noch nie xregexp benutzt und konnte nichts online finden, das zu erklären scheint, wie man das macht. Jede Hilfe wäre großartig, danke!

Diese spezielle Regex sollte alle Unicode-Zeichen, Bindestriche, Kommas, Punkte und Buchstaben oben und unten akzeptieren.

+0

Welche Version von XRegExp haben Sie? '\ pL' wird anscheinend unterstützt, beginnend mit XRegExp 3. –

+0

Ich habe es tatsächlich etwas funktioniert, außer jetzt erlaubt es Zahlen aus irgendeinem Grund. Alles, was ich tun musste, war '\ pL' in' \\ pL' zu ändern, aber ich bin mir völlig unsicher, warum Zahlen jetzt erlaubt sind ... –

Antwort

1

Es ist ziemlich einfach, sobald Sie überprüfen, wie Ihr Muster in der Konsole aussieht. Es sieht wie /^[a-zA-Zs,.'-pL]+$/ aus, was bedeutet, dass Unicode-Buchstaben überhaupt nicht übereinstimmen, da die Backslashes weg sind (Sie müssen doppelte Backslashes in den String-Literalen verwenden, um einen Literal-Backslash zu definieren, der spezielle Zeichen in Regex entfernt). Beachten Sie, dass anstelle von Leerzeichen ein Literal s und '-p einen gültigen Bereich erstellt, so dass kein Fehler ausgelöst wird, aber die Ergebnisse sind wirklich unerwartet. Hier ist, was das Angebot matches (ja, auch Ziffern):

enter image description here

Was Sie auch vermissen, dass \pL bereits [a-zA-Z] umfasst, so dass ein Teil in Ihrem Muster redundant ist.

// YOUR REGEX 
 
console.log("^[a-zA-Z\s,.'\-\pL]+$"); // => /^[a-zA-Zs,.'-pL]+$/ 
 
// SHOULD BE DEFINE AS 
 
console.log("^[\\s,.'\\pL-]+$"); // => /^[\s,.'\pL-]+$/ 
 
// TEST 
 
console.log(XRegExp("^[\\s,.'\\pL-]+$").test('á')); // => true
<script src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.min.js"></script>