代码显示如下:
alert(/symbol([.\n]+?)symbol/gi.test('symbolbbbbsymbol'));
或
alert(/#([.\n]+?)#/gi.test('#bbbb#'));
答案 0 :(得分:8)
因为您正在寻找包含<
和>
内的字符类的点。删除字符类:
/<(.+?)>/
第一个代码块应使用此模式:/symbol(.+?)symbol/
第二个代码块应使用此模式:/#(.+?)#/
答案 1 :(得分:2)
正则表达式返回false,因为当放置在字符类[]
中时,点会失去其匹配任何字符(但换行符)的特殊能力 - 它只匹配简单的"."
。
要匹配并捕获两端用相同单个字符分隔的子字符串,最有效的模式是
/#([^#]+)#/
要匹配并捕获两端用相同的字符序列分隔的子字符串,要使用的模式是
/symbol(.+?)symbol/
或者,如果你想匹配换行符
/symbol([\s\S]+?)symbol/
其中[\s\S]
匹配任何空格或非空格字符,等同于任何字符。
?
包含使模式与 lazily 匹配,即确保匹配在"symbol"
的第一次出现时结束。