猿问

JavaScript 匹配逗号分隔字符串中的多个值

我有一个带有一堆数字的字符串

var matches = '128,126,125,124,123,122,118,117,116,115,99,98,97';

如果值与上面提供的字符串中的 匹配,我想使用不同的子字符串进行检查

var numbers = '126,125';

我试过正则表达式

if( $(this).attr('data-ids').match(new RegExp("(?:^|,)"+matches+"(?:,|$)"))){console.log('found'); }else {console.log('not found')}

但是正则表达式适用于单个值而不适用于多个值

var numbers = '125';

我希望这适用于单个和多个匹配项。


弑天下
浏览 298回答 3
3回答

千巷猫影

如果订单无关紧要,您可以选择一套并检查每个想要的项目。var matches = '128,126,125,124,123,122,118,117,116,115,99,98,97',    numbers = '126,125',    has = numbers.split(',').every(Set.prototype.has, new Set(matches.split(',')));console.log(has);

侃侃尔雅

您需要在 中切换顺序match。我假设numbers变量的值由$(this).attr('data-ids'). 您需要检查$(this).attr('data-ids')内部是否存在,matches而不是相反。将其更改为:if (matches.match(new RegExp("(?:^|,)" + $(this).attr('data-ids') + "(?:,|$)"))) {  console.log('found');} else {  console.log('not found')}另外,如果您只想检查子字符串是否存在,则可以RegExp#test改用
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答