什么';我的Javascript正则表达式有什么问题?

什么';我的Javascript正则表达式有什么问题?,javascript,regex,testing,Javascript,Regex,Testing,我希望正则表达式在且仅当字符串为none、family或work(但不是我的family)时匹配 为什么以下代码的结果为“匹配”?为什么^和$不起作用 var regex = new RegExp("^none|family|work$"); var str = "my family"; document.write(regex.test(str) ? "match" : "no"); 运算符的优先级较低,因此您实际上拥有(^none)|(family)|(work$),它匹配以none开头、

我希望正则表达式在且仅当字符串为nonefamilywork(但不是我的family)时匹配

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

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

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

改用这个:

^(none|family|work)$

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

改用这个:

^(none|family|work)$
您的正则表达式与以下任一项匹配:

  • 字符串开头的“无”
  • “家庭”在字符串中的任何位置;或
  • 字符串末尾的“work”
你可能想要的是

var regex = new RegExp("^(none|family|work)$");
您的正则表达式与以下任一项匹配:

  • 字符串开头的“无”
  • “家庭”在字符串中的任何位置;或
  • 字符串末尾的“work”
你可能想要的是

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