在https://regex101.com/r/YbRw2h/1中测试模式时,它显示两个匹配项。
var patt = /{panel:bgColor=#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})}(rn|r|n)?(.*?){panel}/gm
var str = `{panel:bgColor=#deebff}nThis is info paneln{panel}fkjfkfwkwfj
{panel:bgColor=#deebff}nThis is info paneln{panel}`
console.log(patt.test(str)) //false
如何修复正则表达式?
您可以使用:
{panel:bgColor=#(?:[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})}[^]*?{panel}
{panel:bgColor=#
Match字面意思(?:
切换的非捕获组[A-Fa-f0-9]{6}
匹配6次a-f - a (0-9)|
或[A-Fa-f0-9]{3}
匹配数字0-9的a-f - a出现3次
)
关闭非捕获组}
Match字面意思[^]*?
匹配任意字符(包括换行符){panel}
逐字匹配
Regex演示