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"
。我想检查散列是否只包含数字。我错过了什么?
var reg = /^\d+$/;
应该这样做。原始匹配任何由一位数字组成的内容。
正如您所说,您希望哈希仅包含数字。
const reg = new RegExp('^[0-9]+$');
或者
const reg = new RegExp('^\d+$')
\d
并且[0-9]
两者都是同一个意思。使用的 + 表示搜索 [0-9] 中的一个或多个出现。
这也将允许签名和浮点数或空字符串:
var reg = /^-?\d*\.?\d*$/
如果你不想允许空字符串使用这个:
var reg = /^-?\d+\.?\d*$/
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+$/;
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"));
^[0-9]$
...是匹配任何单个数字的正则表达式,因此 1 将返回 true 但 123 将返回 false。
如果添加 * 量词,
^[0-9]*$
该表达式将匹配任意长度的数字字符串,123 将返回 true。(123f 仍然会返回 false)。
请注意,从技术上讲,空字符串是一个长度为 0 的数字字符串,因此它将使用 ^[0-9]*$ 返回 true 如果您只想接受包含 1 个或多个数字的字符串,请使用 + 而不是 *
^[0-9]+$
正如许多其他人指出的那样,有很多方法可以实现这一点,但我觉得指出原始问题中的代码只需要一个额外的字符即可按预期工作是合适的。