Javascript RegExp在数组中查找值

Javascript RegExp在数组中查找值,javascript,regex,Javascript,Regex,这是我的JavaScript,带有一个不起作用的RegExp,我找不到正确的语法: var arr = ['111', '222|12', '333']; new RegExp('\\b' + value + '\\b').test(arr); value = '111'; //true value = '222'; //true value = '12'; //true 我需要避免a |后面的数字,这意味着数字为12的测试应该返回false。因此,值111、222和333只能产生true 我

这是我的JavaScript,带有一个不起作用的RegExp,我找不到正确的语法:

var arr = ['111', '222|12', '333'];
new RegExp('\\b' + value + '\\b').test(arr);
value = '111'; //true
value = '222'; //true
value = '12'; //true
我需要避免a |后面的数字,这意味着数字为12的测试应该返回false。因此,值111、222和333只能产生true


我只知道第一个\\b必须替换为语法,以避免使用|字符。

您正在向测试方法传递一个数组,而它需要一个字符串。因此数组被强制为逗号分隔的字符串111222 | 23333。显然,这会使您的测试成功,但您也会获得与111222的匹配

对此使用正则表达式似乎有些过分。您可以使用split |删除管道符号后面的部分,然后对每个剩余值进行相等性测试。使用some方法进行迭代,直到获得匹配:

函数isMatcharr,值{ 返回arr.somes=>s.split'|'[0]==value; } var arr=['111','222 | 12','333']; console.logisMatcharr,“111”//符合事实的 console.logisMatcharr,“222”//符合事实的 console.logisMatcharr,“333”//符合事实的
console.logisMatcharr,“12”//False测试方法采用字符串,而不是数组。因此它被强制为一个字符串。您需要迭代arr。可能arr.mapx=>m=x.match/^\d+/?m[0]:可以吗?这将从每个数组项中获取前1+位,或在不匹配时获取空字符串。@trincot奇怪!它在111、222、13和333上返回true-我认为可以使用刚刚发现的语法来避免| symbolat返回true,因为您不测试字符串前后是否包含任何其他内容。这一点也不奇怪。注意,它还将找到111222。这真的是你想要的吗?@trincot你是真的,好吧。。我认为这是工作,我的坏!