我正在使用happyJS,并且使用下面的正则表达式进行电话验证
phone: function (val) {
return /^(?:[0-9]+$)/.test(val);
}
但是这只允许输入数字。我希望用户也能够输入空格,就像这样:
238 238 45383
你知道为什么 return /^(?:[0-9 ]+$)/.test(val);
没起作用吗?
我正在使用happyJS,并且使用下面的正则表达式进行电话验证
phone: function (val) {
return /^(?:[0-9]+$)/.test(val);
}
但是这只允许输入数字。我希望用户也能够输入空格,就像这样:
238 238 45383
你知道为什么 return /^(?:[0-9 ]+$)/.test(val);
没起作用吗?
这是我的建议方案:
/^(?=.*\d)[\d ]+$/.test(val)
(?=.*\d)
表示输入中至少有一个数字。否则,只包含空格的输入也可以匹配。
请注意,这不对数字的数量(仅确保至少有1个数字)或空格应出现在输入的位置上施加任何约束。
?:
来说,我想并不是很重要。我只是模仿OP的代码。而且你的测试用例是错误的,比OP的解决方案还糟糕。/[0-9]/
将检查是否存在数字,/^[0-9 ]/
则检查字符串开头是否存在数字或空格。即使在它们后面加上+
,它们仍然是错误的。 - nhahtdh/[^0-9 ]/
。重点是,将两个简单的东西配合使用比开发一个复杂的东西更容易构建(和维护) - 正则表达式通常也不例外。 - raina77ow/[0-9]/ && ! /[^0-9 ]/
的测试? - raina77ow尝试
phone: function (val) {
return /^(\s*[0-9]+\s*)+$/.test(val);
}
function isTextAndNumberSpaceOnly(text) {
var regex = /^[0-9 ]+$/;
if (regex.test(text)) {
return true;
} else {
return false;
}
}
尝试
/^[\d ]*$/.test("238 238 45383")
console.log(/^[\d ]*$/.test("238 238 45383"));
个人使用此代码,它可以正常工作:
function validateMobile(mob)
{
var re = /^09[0-9]{9}$/
if(mob.match(re))
return true;
else
return false;
}
/^(?:[0-9 ]+$)/.test("238 238 45383");
返回 true。看起来是有效的。 - Anirudh Ramanathan