我希望正则表达式匹配当且仅当字符串无,家庭或工作(但不是我的家人) ,例如)。
为什么以下代码与“匹配”结果?为什么 ^ 和 $ 不起作用?
var regex = new RegExp("^none|family|work$");
var str = "my family";
document.write(regex.test(str) ? "match" : "no");
答案 0 :(得分:4)
|
运算符的优先级较低,因此您实际上拥有(^none)|(family)|(work$)
,其匹配以none
开头的任何内容,包含family
或以work
结尾。
请改用:
^(none|family|work)$
答案 1 :(得分:4)
你的正则表达式匹配 :
你可能想要的是
var regex = new RegExp("^(none|family|work)$");