试图在JavaScript正则表达式中逃避句点,但失败了

时间:2013-12-24 07:22:41

标签: javascript regex

下面的代码试图说明正则表达式中的句点,但由于某种原因它不起作用。我们做错了什么?谢谢!

Demo here

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') );

3 个答案:

答案 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,所以它无法匹配。