Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript在逗号分隔的字符串中匹配多个值_Javascript_Regex - Fatal编程技术网

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

JavaScript在逗号分隔的字符串中匹配多个值,javascript,regex,Javascript,Regex,嗨,我有一个字符串和一堆数字 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'); }e

嗨,我有一个字符串和一堆数字

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';

我希望它能用于单个和多个匹配项。

您可以
包含
每个

var匹配='1281261251241231221181171116115,99,98,97';
变量数='126125';
var t_m=matches.split(','))
var t_n=numbers.split(',')

t_n.every(num=>t_m.includes(num))?console.log(true):console.log(false)
如果顺序不重要(
numbers
可以是
125126
o4
126125
,并且您希望两者都匹配您的示例),则需要将这些字符串拆分为数组,然后检查
numbers
中的条目是否都在
匹配中:

const match = numbers.split(",").every(n => matchesArray.includes(n));
实例:

功能测试(匹配项、数字、预期值){
常量matchesArray=matches.split(“,”);
常量match=numbers.split(“,”).every(n=>matchesArray.includes(n));
log(`matches:${matches}`);
log(`numbers:${numbers}`);
log(`match:${match}`);
console.log(!match===!预期?=>良好):“=>错误”);
}
试验(
'128,126,125,124,123,122,118,117,116,115,99,98,97',
'126,125',
真的
);
试验(
'128,126,125,124,123,122,118,117,116,115,99,98,97',

‘125126’,//如果顺序不重要,你可以拿一套,检查每一件想要的物品

var matches='1281261251241231221181171116115,99,98,97',
数字='126125',
has=numbers.split(',')。every(Set.prototype.has),new Set(matches.split(','));

console.log(has);
您需要在
match
中切换顺序。我假设
numbers
变量具有
$(this)返回的值。attr('data-id')
。您需要检查
$(this)。attr('data-id')
是否存在于
matches
中,而不是相反。将其更改为:

if (matches.match(new RegExp("(?:^|,)" + $(this).attr('data-ids') + "(?:,|$)"))) {
  console.log('found');
} else {
  console.log('not found')
}
另外,如果您只想检查子字符串是否存在,您可以改为使用

(','+matches+',').search(','+numbers+',')>=0;
var matches='1281261251241231221181171116115,99,98,97',
数字='126125';
设r=(','+匹配+',')。搜索(','+数字+',')>=0;

console.log(r)
您是否有
匹配项
数字
变量?您将
匹配项
传递给正则表达式,而您应该传递
数字
。为什么订单不重要?如果
匹配项
包含
125126
时它是否匹配您的
数字
?您可以接受一个答案(如果有帮助的话)点击左边的大灰色复选按钮。如果你希望通过点击上方的灰色三角形给任何一个好答案的作者增加+10分,如果字符串中有
112612566
,这将返回真值。哪种方法?@AZ_Ahh,你在我编辑之前发布了,很好。快速提示,你每次都会记录是:)需要在逗号后面加上
numbers
alsoHi@adiga Number变量可能包含类似“var numbers=”12812412312211811711115,99,98,97“;”这样的内容,它将找不到它。我正在搜索ID并与数据ID匹配,如果存在匹配,我想显示它们,角色可以反转匹配关键字可以是sm都像126,125,这是一个匹配,以及无论哪种方式,我必须检查them@apoorv我很困惑。你为什么要反转变量?从问题看,
matches
拥有所有ID。但是,现在你提到的是,
numbers
是包含所有ID的变量,而
matches
只有有限数量的IDid.
$(this.attr('data-id')是怎么回事
realated to all this让我解释一下,某些div的属性数据id与数据库中的键匹配,因此它们可以是一个或多个值,我正在搜索时运行一个ajax请求,获取与该搜索相关的id。现在,搜索结果可以是一个id或多个id,以便可以保留角色通常我需要检查这两个变量,如果发现匹配,则需要显示div,否则删除它们。这一个完成了任务,我得到了两个变量,但不知道哪一个会更大,所以我使用split并计算数组的长度,以知道哪一个会更大。