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这是一个可怕的想法为什么你要更改问题中的代码?我很抱歉之前发布的代码不完整。我想要的是找到两个符号之间的所有字符串,例如“#***”或“***”原则是一样的:[.]
与
字符完全匹配,其他什么都没有。