Javascript 如果块未在truthy条件下执行。JS
我在JS中偶然发现了意想不到的行为。如果我记录Javascript 如果块未在truthy条件下执行。JS,javascript,regex,string,Javascript,Regex,String,我在JS中偶然发现了意想不到的行为。如果我记录regexpr.test(inp),控制台输出true,但如果此代码用作条件“If block”console.log('in If')未执行 如果我将此代码分配给一个变量,然后将其用作“If block”按预期执行的条件 在chrome控制台和节点上进行了测试 var str = '()' function validateInput (inp) { let regexpr = /^(?:\(|\)|\s)+$/gim console.
regexpr.test(inp)
,控制台输出true
,但如果此代码用作条件“If block”console.log('in If')代码>未执行
如果我将此代码分配给一个变量,然后将其用作“If block”按预期执行的条件
在chrome控制台和节点上进行了测试
var str = '()'
function validateInput (inp) {
let regexpr = /^(?:\(|\)|\s)+$/gim
console.log(regexpr.test(inp)); // logs true
if (regexpr.test(inp)) { // staments in if are not executed
console.log('in if');
}
console.log('after if');
return false
}
function validateInput2 (inp) {
let regexpr = /^(?:\(|\)|\s)+$/gim
let t1 = regexpr.test(inp);
console.log(t1); // logs true
if (t1) { // staments in if are executed
console.log('in if');
}
console.log('after if');
return false
}
console.log(validateInput(str));
console.log('------')
console.log(validateInput2(str));
您正在从头到尾匹配字符串-根本不需要使用g
(全局)标志
let regexpr = /^(?:\(|\)|\s)+$/im;
除非实际需要全局标志,否则不要使用全局标志
let regexpr = /^(?:\(|\)|\s)+$/im;