2012-04-10 20 views
8

文字列に特定の単語が含まれているかどうかを確認する正規表現があります。それは期待どおりに動作します:文字列に特定の単語(変数付き)が含まれている場合のJavaScriptの正規表現テスト

/\bword\b/.test('a long text with the desired word amongst others'); // true 
/\bamong\b/.test('a long text with the desired word amongst others'); // false 

しかし、私は変数でチェックしようとしている単語が必要です。 new RegExpを使用すると、正常に動作しない、それは常にfalseを返します。

var myString = 'a long text with the desired word amongst others'; 

var myWord = 'word'; 
new RegExp('\b' + myWord + '\b').test(myString); // false 

myWord = "among"; 
new RegExp('\b' + myWord + '\b').test(myString); // false 

ここで間違っていますか?

答えて

20
var myWord = 'word'; 
new RegExp('\\b' + myWord + '\\b') 

あなたは、文字列から正規表現を構築する際\をエスケープ倍にする必要があります。


\は、文字列リテラルにエスケープシーケンスを開始しますので、それが正規表現にそれを作ることがないためです。 \\を実行すると、文字列に'\'という文字が含まれているため、正規表現は/\bword\b/となります。

+1

+1 http://jsfiddle.net/TxQ7c/6/ –

+1

あなたの回答を投稿すると同時にそれを見つけました。ありがとうございました。 – Alp

+0

\ bはすべての言語で動作しません – Uri

関連する問題