javascript正则表达式在测试中排除字符串

时间:2017-06-19 10:15:14

标签: javascript regex

这个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)
}

3 个答案:

答案 0 :(得分:1)

如果你只需要匹配好工作&#39;或者&#39;好游戏&#39;。

&#13;
&#13;
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;
&#13;
&#13;

或者你可以直接做一个负面的预测来与不好的男孩匹配:

&#13;
&#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;
&#13;
&#13;

答案 1 :(得分:0)

尝试以下正则表达式:

let res= /good(?! boy)/ig.test(strArr[i])

答案 2 :(得分:0)

这取决于您是否要将其限制为“工作”和“游戏”。否则你自己尝试的后半部分几乎就可以了。把它变成负面的前瞻,而不是积极的前瞻:

good(?! boy)

将匹配良好,然后是男孩。

然后......它可以稍微抛光

\bgood\s(?!boy\b)\w+

匹配单词good,后跟另一个不是男孩的单词。

See it here at regex101

或者只允许一行中的两个单词,添加开始/结束锚点:

^good\s(?!boy\b)\w+$

Here at regex101