javascript - 如果块没有在真实条件下执行。JS
问题描述
我偶然发现了 JS 中的意外行为。如果我登录regexpr.test(inp)
,控制台输出true
,但如果此代码用作条件“如果块”console.log('in if');
未执行。
如果我将此代码分配给一个变量,然后将其用作条件“如果块”按预期执行。
在 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));
true
after if
false
------
true
in if
after if
false
解决方案
您从头到尾匹配字符串 - 您根本不需要使用g
(global) 标志。
let regexpr = /^(?:\(|\)|\s)+$/im;
推荐阅读
- ios - 如何将 activityIndicator 置于其超级视图的中心?
- sql-server - 输出包含多个数组的 JSON
- dm-script - DigitalMicrograph 光束移位脚本
- unit-testing - 下载 github 项目的 zip 时单元测试不会运行,但从命令行克隆时可以正常工作
- delphi - 在 TForm2 的 OnClose 时简单启用 TForm1 的 TButton
- reactjs - 如何使用react js构建动态项目集乘以3
- sql - 将 nvarchar 值“H14”转换为数据类型 int 时转换失败
- r - 您如何在 [r] 中编写多个栅格?
- python - 如何使用 mibdump.py 生成不同名称的 pysnmp MIB?
- java - 找到多个文件,其独立于操作系统的路径为“convertGermanToBoolean.properties”