2013-07-18 10 views

Antwort

43

Da Sie den RegExp mit einem String der schaffen _\-\. wird _-. und das ist der ungültige Bereich. (Es ist ein Bereich _-. und das ist nicht richtig)

Sie müssen doppelten Escape es:

new RegExp("^([A-Za-z0-9_\\-\\.])[email protected]" + domain + "$"); 

diese Weise die \\ ein \ im String wird und dann verwendet wird, um die - in der RegExp zu entkommen.

EDIT:

Wenn Sie RegExp von String erstellen, ist es immer hilfreich, um das Ergebnis zu protokollieren, damit Sie sehen, ob Sie alles richtig gemacht haben:

z.B. Ihr Teil des RegExp

console.log("^([A-Za-z0-9_\-\.])+\@"); 

Ergebnisse in:

^([A-Za-z0-9_-.])[email protected] 
+6

Eine kurze Möglichkeit, dies zu bewerkstelligen, ist, wenn Sie ein '-' als gültiges Zeichen in Ihrer Zeichengruppe zulassen müssen, immer als erstes oder letztes Zeichen in der Gruppe (zB' [ -a-zA-Z0-9 _] 'oder' [a-zA-Z0-9 _-] '). Regex ist schlau genug, um zu wissen, dass Sie keinen Bereich mit diesem Zeichen angeben, wenn es an diesen Positionen ist (ohne mit einem Schrägstrich entkommen zu müssen). – talemyn

+0

@talemyn Sicher ist das wahr. Persönlich bevorzuge ich es zu entgehen (und dies auch in unserer Kodierungsrichtlinie zu verankern), weil es eine besondere Bedeutung hat. –

+0

Dies sollte als Antwort akzeptiert werden. netter Zusatz von @talemyn auch – adi

Verwandte Themen