2010-08-23 30 views
1

我想正则表达式匹配当且仅当该字符串没有家庭工作(但不我的家人,例如)。我的Javascript正则表达式有什么问题?

为什么下面的代码会导致“匹配”?为什么^$不起作用?

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

回答

4

|经营者有优先级很低,所以你必须有效(^none)|(family)|(work$),它匹配任何与none开始,包含familywork结束。

使用这个代替:

^(none|family|work)$ 
+0

非常感谢! – 2010-08-23 11:54:45

4

你的正则表达式匹配要么

  • “无”的字符串的开头;
  • “家族”字符串中的任何位置;
  • “工作”在字符串的末尾。

你可能想要什么,而不是为

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

非常感谢! – 2010-08-23 11:54:17