2012-04-10 11 views
8

Mam wyrażenie regularne, aby sprawdzić, czy ciąg zawiera określone słowo. Działa zgodnie z oczekiwaniami:Test regex JavaScript, jeśli ciąg zawiera określone słowo (ze zmienną)

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

Ale potrzebuję słowa, które ma zostać sprawdzone w zmiennej. Korzystanie new RegExp nie działa prawidłowo, to zawsze wraca 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 

Co tu jest nie tak?

Odpowiedz

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

trzeba podwoić uciec \ przy budowie regex z łańcucha.


To dlatego \ rozpoczyna sekwencję escape w łańcuchu dosłownym, więc nigdy nie sprawia, że ​​do wyrażenia regularnego. Robiąc \\, dodajesz literowy znak '\' w łańcuchu, który tworzy wyrażenie regularne /\bword\b/.

+1

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

+1

Wyliczyłem to w momencie wysłania odpowiedzi. Dziękuję Ci. – Alp

+0

\ b nie będzie działać ze wszystkimi językami – Uri

Powiązane problemy