我想检查是否所有“ do”“ drugs”都以相同的频率和顺序出现在字符串中,而不管两者之间是什么。
例如,它应该匹配:
"Everyone go do drugs"
"Everyone go d[o] dru]gs!"
"Everyone go do[heyyo]dr--ugs"
正则表达式似乎不是正确的方法。我该怎么办?
答案 0 :(得分:1)
此正则表达式不是您想要的吗?
/^.*d.*o.*d.*r.*u.*g.*s.*$/i
使用此正则表达式,您可以改变之间的符号数量
/^.*d.{0,10}o.{0,10}d.{0,10}r.{0,10}u.{0,10}g.{0,10}s.*$/i
如果您以前没有遇到https://regex101.com/,请看看。这是学习和实验的好地方
答案 1 :(得分:1)
您可以做的是先检查string
中所有regex
中的特殊字符:
.replace(/[^\w\s]/gi, '')
从string
中删除所有特殊字符。/do.+drugs/
作为正则表达式来检查字符串是否符合所需的模式。演示:
let inputs = ["Everyone go do drugs",
"Everyone go d[o] dru]gs!",
"Everyone go do[heyyo]dr--ugs"
];
inputs = inputs.map(i => i.replace(/[^\w\s]/gi, ''));
inputs.forEach(i => {
console.log(i + ": " + i.match(/do.+drugs/));
});