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

Javascript 为什么正则表达式的返回是错误的?,javascript,regex,Javascript,Regex,代码如下所示: alert(/symbol([.\n]+?)symbol/gi.test('symbolbbbbsymbol')); 或 因为您正在查找中包含字符类的点。删除字符类: /<(.+?)>/ // 问题编辑后的澄清: 第一个代码块应该使用以下模式:/symbol(+?)symbol/ 第二个代码块应该使用这种模式:/#(.+?)/正则表达式返回false,因为点在字符类[]中时失去了匹配任何字符(但换行符)的特殊能力-它只匹配简单的” 要匹配和捕获由同一个字符在两端

代码如下所示:

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


因为您正在查找
中包含字符类的点。删除字符类:

/<(.+?)>/
//
问题编辑后的澄清: 第一个代码块应该使用以下模式:
/symbol(+?)symbol/


第二个代码块应该使用这种模式:
/#(.+?)/
正则表达式返回false,因为点在字符类
[]
中时失去了匹配任何字符(但换行符)的特殊能力-它只匹配简单的

要匹配和捕获由同一个字符在两端分隔的子字符串,最有效的模式是

/#([^#]+)#/
/symbol(.+?)symbol/
要匹配和捕获由相同字符序列在两端分隔的子字符串,使用的模式是

/#([^#]+)#/
/symbol(.+?)symbol/
或者,如果要跨换行符进行匹配

/symbol([\s\S]+?)symbol/
其中
[\s\s]
匹配任何空格或非空格字符,这些字符等同于任何字符


用于使模式延迟匹配,即确保匹配在第一次出现
“symbol”

更改为
//gi
时结束。另外,不要用RegExp解析HTML这是一个可怕的想法为什么你要更改问题中的代码?我很抱歉之前发布的代码不完整。我想要的是找到两个符号之间的所有字符串,例如“#***”或“***”原则是一样的:
[.]
字符完全匹配,其他什么都没有。