为什么正则表达式的返回是错误的?

时间:2013-03-10 16:38:33

标签: javascript regex

代码显示如下:

alert(/symbol([.\n]+?)symbol/gi.test('symbolbbbbsymbol'));

alert(/#([.\n]+?)#/gi.test('#bbbb#'));

2 个答案:

答案 0 :(得分:8)

因为您正在寻找包含<>内的字符类的点。删除字符类:

/<(.+?)>/

问题编辑后的澄清:

第一个代码块应使用此模式:/symbol(.+?)symbol/

第二个代码块应使用此模式:/#(.+?)#/

答案 1 :(得分:2)

正则表达式返回false,因为当放置在字符类[]中时,点会失去其匹配任何字符(但换行符)的特殊能力 - 它只匹配简单的"."

要匹配并捕获两端用相同单个字符分隔的子字符串,最有效的模式是

/#([^#]+)#/

要匹配并捕获两端用相同的字符序列分隔的子字符串,要使用的模式是

/symbol(.+?)symbol/

或者,如果你想匹配换行符

/symbol([\s\S]+?)symbol/

其中[\s\S]匹配任何空格或非空格字符,等同于任何字符。

?包含使模式与 lazily 匹配,即确保匹配在"symbol"的第一次出现时结束。