1

これはおそらく答えるのが非常に簡単な質問ですが、正しい方法がわかりません。

^ and $その文字列で開始および終了する要素のみを一致させるために、正規表現を使用してテキストを一致させる必要があります。ただし、変数を使用してそれを行う必要があります。

var name // some variable
var re = new RegExp(name,"g");

したがって、 my variable を完全に (最初から最後まで) 含むすべての文字列と一致さnameせたいのですが、どこかに my variable を含む文字列と一致させたくありませんname

どうすればいいですか?

ありがとう

4

3 に答える 3

5
var strtomatch = "something";
var name = '^something$';
var re = new RegExp(name,"gi");
document.write(strtomatch.match(re));

iは大文字と小文字を区別しないためのものです。これは単語「something」にのみ一致し、何か他のものには一致しません。

文の途中で一致させたい場合は、コードで次を使用する必要があります

var name = ' something ';

あるいは、単語境界を使用して、

var name = '\\bsomething\\b';

実施例

于 2012-07-15T04:23:23.910 に答える
3

something文字列の先頭または末尾で一致させたい場合は、次のようにします。

/^something|something$/

あなたの変数で:

new RegExp("^" + name + "|" + name + "$");

編集:更新された質問では、name変数を文字列全体に一致させる必要があるため、次のようになります。

new RegExp("^" + name + "$"); // note: the "g" flag from your question
                              // is not needed if matching the whole string

nameしかし、正規表現自体が含まれていない限り、それは無意味です。

var strToTest = "something",
    name = "something",
    re = new RegExp("^" + name + "$");

if (re.test(strToTest)) {
   // do something
}

次のように言うこともできます。

if (strToTest === name) {
   // do something
}

EDIT 2: OK、あなたのコメントから、正規表現は、テスト文字列のどこにでも個別の単語として「何か」が現れる場所に一致する必要があると言っているようです。

"something else"           // should match
"somethingelse"            // should not match
"This is something else"   // should match
"This is notsomethingelse" // should not match
"This is something"        // should match
"This is something."       // should match?

それが正しければ:

re = new RegExp("\\b" + name + "\\b");
于 2012-07-15T04:33:40.347 に答える
1

を使用する必要があります/\bsomething\b/\b単語境界に一致することです。

"A sentence using something".match(/\bsomething\b/g);
于 2012-07-15T04:31:41.477 に答える