2

この投稿からjavascriptメール検証コードを取得しました。すべての回答によると、RFC2822正規表現は次のとおりです。

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

これをjsに含めようとしましたが、構文エラーが発生します。

var email = this.value;
if(email.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/) )
{
    //matched...
} else {
    //not matched..
}

eclipseを使用していますが、このコードを入力するとすぐにエラーが発生します。長いリストからのエラーのいくつかはここにあります

Multiple markers at this line
- Syntax error on tokens, ArrayLiteralHeader expected instead
- Syntax error on token "?", invalid Expression
- Syntax error on token "Invalid Character", delete this token
- Syntax error on tokens, delete these tokens
- Syntax error, insert ")" to complete Arguments
- Missing semicolon
- Syntax error on token "Invalid Character", delete this token
- Syntax error, insert ")" to complete PrimaryNoNewArray
- Syntax error on tokens, ArrayLiteralHeader expected instead
- Syntax error on token "^", invalid (

メール検証正規表現をコードに適切に含める方法を教えてください。

編集

ブラウザコンソールで試してみました。まったく同じ構文がchromejsコンソールで機能します。これが出力です

Webコンソール

ありがとう

4

3 に答える 3

2

Javascript正規表現リテラルは/それを囲む必要があります。

if(email.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/) )
{
    //matched...
} else {
    //not matched..
}
于 2012-09-02T12:11:29.563 に答える
1

Javascriptでは、次のような正規表現を使用します。

myString.match(/<regexHere>/)
于 2012-09-02T12:11:24.390 に答える
0

正規表現は、JavaScriptの「/」でカプセル化する必要があります。

    if (/[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i.test(subject)) {
        // Successful match
    } else {
        // Match attempt failed
    }
于 2012-09-02T12:11:33.277 に答える