Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在测试中排除字符串的javascript正则表达式_Javascript_Regex - Fatal编程技术网

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

用于在测试中排除字符串的javascript正则表达式,javascript,regex,Javascript,Regex,这个javascript正则表达式试图匹配“good job”或“good game”,但不匹配“good boy” 你知道如何通过在“好孩子”中返回false来实现它吗?谢谢 let strArr=[“干得好”、“玩得好”、“乖孩子”]; 对于(i=0;i

这个javascript正则表达式试图匹配“good job”或“good game”,但不匹配“good boy” 你知道如何通过在“好孩子”中返回false来实现它吗?谢谢
let strArr=[“干得好”、“玩得好”、“乖孩子”];
对于(i=0;i}
如果您只需要匹配“好工作”或“好游戏”

let strArr=[“干得好”、“玩得好”、“乖孩子”];
对于(i=0;i}
尝试以下正则表达式:

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

这取决于你是否想把它局限于“工作”和“游戏”。否则,你自己尝试的下半部分几乎做到了。将其转换为负面展望,而不是正面展望:

good(?! boy)
将匹配好,然后是任何男孩

然后再一次。。。可以稍微擦一擦

\bgood\s(?!boy\b)\w+
匹配单词
good
,后跟另一个不是boy的单词

或者,要仅允许一行中的两个单词,请添加开始/结束锚定:

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

.

只需使用:
/\b好的(?:job | game)\b/g
FYI:使用
g
修饰符并将正则表达式传递给
RegExp#test()
不是一个好主意<代码>/\b好的(?:工作|游戏)\b/就可以了。除非
good
可以以非单词字符开头,或者
job/game
可以以非单词字符结尾。这很好。请看我关于锚的回答。也许
/\b好(工作|游戏)\b/
会更好。还要注意Wiktor对问题的评论。