这个javascript正则表达式试图匹配“好工作”或“好游戏”而不是“好孩子” 任何想法如何通过为“好男孩”返回虚假来使其工作?谢谢
let strArr = ['good job', 'good game', 'good boy'];
for (i = 0; i < strArr.length; i++) {
let res= /good[jobgame]*|good(?= boy)/ig.test(strArr[i])
console.log(res)
}
答案 0 :(得分:1)
如果你只需要匹配好工作&#39;或者&#39;好游戏&#39;。
let strArr = ['good job', 'good game', 'good boy'];
for (i = 0; i < strArr.length; i++) {
let res= /good (job|game)/ig.test(strArr[i])
console.log(res)
}
&#13;
或者你可以直接做一个负面的预测来与不好的男孩匹配:
let strArr = ['good job', 'good game', 'good boy'];
for (i = 0; i < strArr.length; i++) {
let res= /good (?!boy)/ig.test(strArr[i])
console.log(res)
}
&#13;
答案 1 :(得分:0)
尝试以下正则表达式:
let res= /good(?! boy)/ig.test(strArr[i])
答案 2 :(得分:0)
这取决于您是否要将其限制为“工作”和“游戏”。否则你自己尝试的后半部分几乎就可以了。把它变成负面的前瞻,而不是积极的前瞻:
good(?! boy)
将匹配良好,然后是但男孩。
然后......它可以稍微抛光
\bgood\s(?!boy\b)\w+
匹配单词good
,后跟另一个不是男孩的单词。
或者只允许一行中的两个单词,添加开始/结束锚点:
^good\s(?!boy\b)\w+$