仅在jQuery验证中验证数字、括号和空格
Validate numbers, parenthesis and spaces only in jQuery validation
我在jQuery验证中尝试验证电话号码,但失败了。我只想允许一个像(01660) 888999
这样的数字。环顾网络,我发现了一百万个例子,但似乎什么都不起作用。这是我目前的努力
$.validator.addMethod("phonenumber", function(value) {
var re = new RegExp("/['d's()+-]/g");
return re.test(value);
//return value.match("/['d's]*$");
}, "Please enter a valid phone number");
Bergi认为构造正则表达式的方式是错误的,这是正确的。
另一个问题是缺少锚点和+
:
var re = /^['d's()+-]+$/;
请注意,基于正则表达式的解决方案仍然允许一些无效电话号码的输入。您可以通过多种方式改进正则表达式,例如,您可能希望要求至少有x个数字。
关于哪些电话号码是有效的和无效的,有很多规则。您不太可能以可维护的方式将所有这些规则编码到正则表达式中,因此您可以尝试以下方法之一:
- 找到一个能够验证电话号码的库(但可能不是基于正则表达式)
- 如果你需要一个正则表达式,那么就要找一个与规则非常接近的表达式,但不要试图处理所有的特殊情况。我建议尝试编写一个表达式,接受所有有效的电话号码,但不一定拒绝所有无效的电话号码
您可能还想考虑为您的解决方案编写测试用例。测试还将作为您希望接受和拒绝哪些输入的文档形式。
您需要在RegExp
构造函数中使用regex文本或字符串文本:
var re = /['d's()+-]/g;
// or
var re = new RegExp("[''d''s()+-]", "g");
请参见创建正则表达式。
除此之外,您还需要使用字符串的开始和结束锚来确保正则表达式匹配整个字符串,而不仅仅是其中的一部分,并使用一些重复修饰符来允许多个字符:
var re = /^['d's()+-]+$/g;
另一种方法可能是:
function(value) {
return /^'d+$/.test(value.replace(/[()'s+-]/g,''));
}
如果你也想检查数字的长度,就说它必须是一个有10位数字的字符串:
function(value) {
return /^'d{10}$/.test(value.replace(/[()'s+-]/g,''));
}
相关文章:
- 仅在jQuery验证中验证数字、括号和空格
- 仅当后面跟着字母表时才允许使用空格字符的验证
- regex验证允许尾随空格
- 用于 HTML 表单验证的正则表达式在没有空格的情况下开始
- 使用 javascript 验证空格
- 表单验证 - Javascript 删除空格电话号码
- 动态验证输入框是否有空格或是否为空
- 引导验证器.正则表达式没有空格
- 如何验证字母数字输入之间的空格
- 只允许字母和空格-jquery验证插件
- 仅验证空格的文本框
- 如何验证通过JavaScript正则表达式仅输入的字母和空格
- 验证数字并允许空格
- 根据空格验证文件名的正则表达式
- 验证文本区域是否允许输入数字、逗号、点和空格
- 如何阻止多个空格清除表单验证
- 如何验证html文本框不允许特殊字符和空格
- 用逗号和空格表示验证号的正则表达式
- Javascript:只验证alpha和空格
- 使用事件.用来验证用户按下空格键是否在Firefox中不起作用