下面的代码试图说明正则表达式中的句点,但由于某种原因它不起作用。我们做错了什么?谢谢!
var word = 'g.i.';
var escaped_word = word.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
var re = new RegExp( '\\b' + escaped_word + '\\b', 'i' );
alert( 'output: ' + re.test('g.i. jane') );
答案 0 :(得分:0)
您需要从正则表达式的RHS中删除\\b
,因为匹配literal dot
后没有字边界:
var re = new RegExp( '\\b' + escaped_word, 'i' );
alert( 'output: ' + re.test('g.i. jane') ); // true
答案 1 :(得分:0)
\b
匹配单词,.
不是单词字符。你的正则表达式没有单词边界就可以正常工作:http://jsfiddle.net/6EBBJ/3/
答案 2 :(得分:0)
那是因为\\b
在\.
处不匹配。
请注意,您的转义输出为correct,或you remove the \\b
:。
\b
在\w
和\W
之间匹配,反之亦然。 .
和空格都在\W
,因为您没有\w
,所以它无法匹配。