2017-02-16 12 views
-2

電子メールフィールドでjsで正規表現を実行しようとしています。新しいRegex()は末尾にスラッシュを追加します

/[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$\/g/ 

私は何をしたいことは次のとおりです:

/[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$/g 

をそのまま

var regex  = '[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\\.[a-zA-Z]{2,16}?$/g', 
emailRegex  = new RegExp(regex); 

私はemailRegexはそれを返す)(CONSOLE.LOG場合: これは私がこれまで持っているものです今はそれが電子メールを返す無効なエラーです。私が欲しいと思ったregexpとhttps://regex101.com/を使用すると、console.log()で返されたregexpを使ってマッチしないというメッセージが表示されます。

RegExpから後続のスラッシュを削除するにはどうすればよいですか?

+0

'VAR正規表現=「^ [-ZA-Z0-9 ._%+ - ] + @ [ a-zA-Z0-9 .-] + \\ [a-zA-Z] {2,16}?$ '、 emailRegex = new RegExp(正規表現、' g ');' –

+0

@ウィキモバイルそれは正規表現に新しい、あなたはグローバルをRegExpクラスに渡すことができないことを認識していなかったhaha #scrub :) – HugoNumber1

答えて

4

/regularexpression/flagsの形式は、正規表現の場合はの形式のです。 RegExpコンストラクタを使用している場合は使用しません。代わりに、あなたは2つの個別の文字列を使用しますので、new RegExp("regularexpression", "flags")

:もちろん

var regex  = '[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\\.[a-zA-Z]{2,16}?$', 
emailRegex  = new RegExp(regex, "g"); 

を、この場合には、new RegExpの必要はありません。

var emailRegex = /[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$/g; 
+0

ありがとう、あなたはクラスにフラグのものを渡すことができませんでした - regexpで新しいhahaは受け入れます8分 – HugoNumber1

1

リテラル正規表現にあなたをフラグを追加するには/リテラル形式を使用する必要があります。

var r = /matching/g; 

RegExpコンストラクタを明示的に使用する場合を除き、文字列を経由して作成するときにフラグを供給することができません。

var r = new RegExp('matching', 'g'); 
関連する問題