我的Javascript正则表达式出了什么问题?

时间:2010-08-23 11:48:23

标签: javascript regex testing

我希望正则表达式匹配当且仅当字符串家庭工作(但不是我的家人) ,例如)。

为什么以下代码与“匹配”结果?为什么 ^ $ 不起作用?

var regex = new RegExp("^none|family|work$");
var str = "my family";
document.write(regex.test(str) ? "match" : "no");

2 个答案:

答案 0 :(得分:4)

|运算符的优先级较低,因此您实际上拥有(^none)|(family)|(work$),其匹配以none开头的任何内容,包含family或以work结尾。

请改用:

^(none|family|work)$

答案 1 :(得分:4)

你的正则表达式匹配

    字符串开头
  • “none”;
  • “家庭”字符串中的任何地方;
  • 在字符串末尾“工作”。

你可能想要的是

var regex = new RegExp("^(none|family|work)$");