2012-04-10 10 views
8

Ich habe eine Regex, um zu überprüfen, ob eine Zeichenfolge ein bestimmtes Wort enthält. Es funktioniert wie erwartet:JavaScript Regex Test, wenn Zeichenfolge enthält ein bestimmtes Wort (mit Variable)

/\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 

Aber ich brauche das Wort, das in einer Variablen überprüft werden soll. new RegExp Mit nicht richtig funktioniert, es gibt immer 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 

Was ist hier falsch?

Antwort

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

Sie müssen die doppelte \ zu entkommen, wenn eine Regex aus einem String zu bauen.


Dies liegt daran, \ eine Escape-Sequenz in einem Stringliteral beginnt, so macht es nie auf die regex. Indem Sie \\ tun, schließen Sie ein Literal '\' Zeichen in die Zeichenfolge ein, die die Regex /\bword\b/ macht.

+1

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

+1

Sie haben es zur gleichen Zeit herausgefunden, als Sie Ihre Antwort gepostet haben. Vielen Dank. – Alp

+0

\ b wird nicht mit allen Sprachen funktionieren – Uri

Verwandte Themen