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”都是假的。我想检查哈希是否只包含数字。我错过什么了吗?
当前回答
为什么不用这样的东西:
$.isNumeric($(input).val())
jquery测试,和最常见的情况下检查
其他回答
^[0-9]$
...是一个匹配任何单个数字的正则表达式,因此1将返回true,而123将返回false。
如果你加上量词*,
^[0-9]*$
表达式将匹配任意长度的数字字符串,123将返回true。(123f仍然返回false)。
请注意,从技术上讲,一个空字符串是一个长度为0的数字字符串,因此它将使用^[0-9]*$返回true。如果您只想接受包含1个或多个数字的字符串,请使用+而不是*
^[0-9]+$
正如其他人所指出的那样,有很多方法可以实现这一点,但我认为应该指出,原始问题中的代码只需要一个额外的字符就可以正常工作。
如您所说,您希望哈希只包含数字。
const reg = new RegExp('^[0-9]+$');
or
const reg = new RegExp('^\d+$')
\d和[0-9]都是同一个意思。 使用+表示搜索[0-9]中的一个或多个。
var validation = {
isEmailAddress:function(str) {
var pattern =/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
return pattern.test(str); // returns a boolean
},
isNotEmpty:function (str) {
var pattern =/\S+/;
return pattern.test(str); // returns a boolean
},
isNumber:function(str) {
var pattern = /^\d+\.?\d*$/;
return pattern.test(str); // returns a boolean
},
isSame:function(str1,str2){
return str1 === str2;
}
};
alert(validation.isNotEmpty("dff"));
alert(validation.isNumber(44));
alert(validation.isEmailAddress("mf@tl.ff"));
alert(validation.isSame("sf","sf"));
简单的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 = /^-?\d*\.?\d*$/
如果你不想让空字符串使用这个:
var reg = /^-?\d+\.?\d*$/