2015-12-01 44 views
1

我已经阵列的Javascript正则表达式匹配在逗号的元件分隔的列表

var myArray = [ 
    { 
     "field1":"Value 1", 
     "IDs":"" 
    }, 
    { 
     "field1":"Value 2", 
     "IDs":"123" 
    }, 
    { 
     "field1":"Value 3", 
     "IDs":"1233; 222" 
    } 
]; 

而且对抗

var filterID = 123; 

筛选记录在阵列的变量,这些ID可以是空的或有一个值或用分号分隔的多个值。结果应该始终返回所有空白ID加上所有匹配的ID。所以: filterID = 123应该返回'值1'和'值2',但不是'值3'。

很显然,我不能检查每个ID是否包含字符串比较的fitlerID,因为它也应该返回'值3'。 '1233'包含'123'。

一种方法是拆分每个ID字符串并删除分号并对每一位进行比较。

但是,我想知道是否有更简单的方法来检查使用正则表达式?

ie什么正则表达式将返回数组的元素,其中id是空白或123作为分号分隔列表中的值之一?

回答

2

可以使用界碑\b和OR(|)对一个空字符串:

/\b123\b|^$/ 

这意味着,如果它是一个完整的字123将只匹配(即,比其他字符包围[A-Za-z0-9_])和^$将会捕获一个空字符串。 More info on the \b marker here

这是一个demo of the regex和一个带示例函数的fiddle

+0

你为什么要检查空字符串? '\ b123 \ b'应该完成这项工作 – MaxZoom

+0

@MaxZoom从问题:“结果应该总是返回所有空白ID加上所有匹配的。” –

+0

谢谢@EdCottrell。我怎么会写在JS中?我试过 \t'str =“1233; 222”; \t var test = str.match(/ \ b123 \ b |^$ /); \t console.log(test);' 返回undefined。 –

相关问题