hash = window.location.hash.substr(1);
var reg = new RegExp('^[0-9]$');
console.log(reg.test(hash));
“123”和“123f”都是假的。我想检查哈希是否只包含数字。我错过什么了吗?
hash = window.location.hash.substr(1);
var reg = new RegExp('^[0-9]$');
console.log(reg.test(hash));
“123”和“123f”都是假的。我想检查哈希是否只包含数字。我错过什么了吗?
当前回答
您也可以使用以下方法,但要注意它们的内部实现和/或返回值。
1A isNaN(+'13761123123123'); // returns true
1B isNaN(+'13761123123ABC'); // returns false
2A ~~'1.23'; // returns 1
2B ~~'1.2A'; // returns 0
For 1A & 1B the string is first type coerced using the + operator before being passed to the isNaN() function. This works because a number types that include non-numeric values return NaN. There are considerations with the isNaN()'s implementation details which is documented here. One consideration is if a boolean value is passed as isNaN(+false|true) are coerced to their numeric equivalents and thus false is returned but one might expect the function to return true since the boolean value isn't numeric in the sense of what we are testing.
对于2A和2B,值得注意的是,寻找数字的补数要求给定的值在规范中可以引用的32位有符号整数的值范围内。
我个人的偏好是1A和1B,因为它们包含一元运算符,因此可读性较差,因为速度和简洁。
穿孔https://jsperf.com/numeric-string-test-regexvsisnan/1
其他回答
你需要*,所以它表示“零或多个前一个字符”,这应该做到:
var reg = new RegExp('^\\d*$');
也许它有用:
let a = "1234"
parseInt(a) == a // true
let b = "1234abc"
parseInt(b) == b // false
var reg = /^\d+$/;
应该这么做。原始值匹配任何恰好包含一个数字的值。
简单的Regex javascript
var cnpj = "12.32.432/1-22";
var rCnpj = cnpj.replace(/\D/gm,"");
console.log(cnpj);
*结果:
1232432122
只检查数字:
if(rCnpj === cnpj){
return true;
}
简单的例子
if("12.32.432/1-22".replace(/\D/gm,"").length > 0){
console.log("Ok.");
}
如果你想用带符号的值匹配数字,你可以使用:
var reg = new RegExp('^(\-?|\+?)\d*$');
它将验证格式的数字:+1,-1,1。