给出以下字符串:
dfs
我想要以下输出: 真正 真正 假 假 真正 真正 假 真正 是
我有这个正则表达式a
b
ab
ba
bab
aba
abab
babab
asdgasdgsdgasa
在此调试器中匹配得很好:https://regex101.com/ 但是,它与该调试器中的任何内容都不匹配:https://regexr.com/
那是为什么?
这也是为什么:
^([ab])(?:.*?\1)?$
以下内容是否为假?
console.log(/^([ab])(?:.*?\1)?$/.test('aba'))
true
我的问题是不提供匹配这些字符串的新方法或新的正则表达式。我只想:
1)了解正则表达式调试器之间为何存在此类差异
2)如果我给的正则表达式很好地匹配了这样的字符串
3)为什么第一个控制台日志匹配,而第二个控制台日志不匹配,我应该更改什么才能使其与var re = new RegExp("^([ab])(?:.*?\1)?$");
re.test("aba");
false
答案 0 :(得分:3)
第一个regex调试器默认情况下启用了多行标志;第二个没有。如果您在第二个中启用多行(m
)标志,它将像第一个中一样工作。
与ibrahim mahrir pointed out一样,您实际上不需要使用正则表达式。您可以只使用str[0] === str[str.length - 1]
。
在var re = new RegExp("^([ab])(?:.*?\1)?$");
中,您需要转义反斜杠:"^([ab])(?:.*?\\1)?$"