如果字符串没有匹配,则该数组的长度不等于0
,并且当没有if else
语句时,不可能创建false
语句以允许value
匹配。
textarea
是来自单个token
的多行输入,var token = "//num"
在这种情况下是function checkValid(value, token)
{
// Checks to see if value contains the token
var reg = new RegExp(token, "g");
var result = value.match(reg);
if (result.length == 1)
{
return true;
}
return false;
}
在另一个函数中定义并传入。
这是我的检查功能:
{{1}}
如果输入文本包含多个令牌实例,我会得到一个错误的返回,这就是我想要的,同时一次出现的令牌也会返回true。但是,零次出现的令牌将不允许任何响应。在这一点上,我认为程序正在停止,但当然codepen没有表明情况就是这样。
答案 0 :(得分:6)
如果没有匹配,match
将返回null
而不是空数组。
在检查result
之前检查result.length
是否存在。
function checkValid(value, token)
{
// Checks to see if value contains the token
var reg = new RegExp(token, "g");
var result = value.match(reg);
return result && result.length;
}
答案 1 :(得分:3)
.match()
会返回null
,它不会返回空数组:
> 'aa'.match(new RegExp('a', 'g'))
[ 'a', 'a' ]
> 'a'.match(new RegExp('a', 'g'))
[ 'a' ]
> 'b'.match(new RegExp('a', 'g'))
null
然后,您可以检查结果是否为空:
if (result === null) return false
或以更紧凑的方式:
function checkValid(value, token)
{
var reg = new RegExp(token, "g");
var result = value.match(reg);
return (result !== null && result.length === 1);
}