我在输入框中有一串 CSV 格式的 ID
12,23,26,32
我必须检查这个字符串是否包含 23 或 24,如果是则返回 false,否则返回 true
使用 indexOf。您可以检查它是否包含子字符串。如果未找到,则返回 -1
var str = "12,23,26,32"
return !(str.indexOf("23")!=-1 || str.indexOf("24")!=-1) // Dont have 23 or 24
=======编辑=======
就像@Matt 在评论中所说,这个解决方案也适用于“12,239,26,32”,这不是重点。
在检查 indexOf 之前进行拆分,然后您将获得逗号之间的元素。
var array = "12,23,26,32".split(",");
return !(array.indexOf("23")!=-1 || array.indexOf("24")!=-1) // Dont have 23 or 24
!/(^|,)2[34](,|$)/.test( str );
或者是否可能存在空格
!/(^|,)\s*2[34]\s*(,|$)/.test( str );
如果字符串参数与正则表达式匹配或不匹配, RegExptest
方法将返回。反转测试调用的结果。true
false
!
^
是字符串开头的元字符,因此(^|,)
表示“字符串开头”或“一个逗号字符”。
不能这样写[^,]
,因为这意味着“一个不是逗号的字符”,也不能这样写[,^]
,因为这意味着“一个字符既可以是逗号,也可以是文字^
字符。
2[34]
表示 2 后跟 3 或 4。
(,|$)
表示逗号或$
字符串的结尾。
\s*
表示零个或多个空格字符。
if (/(?:^|,)(23|24)(?:,|$)/.test("12,23,26,32")) {
/* found 23 or 24 */
}
尝试这个
var str = "12,23,26,32";
var isFound = (str.indexOf('23') || str.indexOf('24')) > -1;
var str = "12,23,26,32";
var obj = str.split(",");
var isFound = false;
for(i=0; i < obj.length; i++)
{
if(obj[i] == "23" || obj[i] == "24")
{
isFound = true;
break;
}
}
return isFound;