我正在尝试使用regex.test
来查看数字开头是否有'+'或'-'。最好的解决方案是什么?
我已经尝试过了:
var regex = RegExp('^[0-9]*$');
var str1 = +384572985;
console.log(regex.test(str1)); //return true
var str2 = "+384572985";
console.log(regex.test(str2)); //return false
但是我希望他们两个都返回false!
答案 0 :(得分:2)
我不确定什么是最好的方法,但是我们可以使用类似以下的表达式来做到这一点:
^[+-][0-9]+$
const regex = /^[+-][0-9]+$/gm;
const str = `+384572985
-384572985
++384572985
384572985`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
如果不需要此表达式,可以在regex101.com中对其进行修改或更改。
jex.im可视化正则表达式:
答案 1 :(得分:1)
str1
不是字符串。它被强制转换为字符串。由于操作顺序,在对正则表达式进行评估之前,+123
的计算结果仅为123
。就像运行/3/.test(1+2)
。