function getValidNumber(value)
{
value = $.trim(value).replace(/\D/g, '');
if (value.substring(0, 1) == '1') {
value = value.substring(1);
}
if (value.length == 10) {
return value;
}
return false;
}
字符串 下面介绍一下这个方法怎么用
var num = getValidNumber('(123) 456-7890');
if(num !== false){
alert('The valid number is: ' + num);
} else {
alert('The number you passed is not a valid US phone number');
}
9条答案
按热度按时间m4pnthwp1#
您的正则表达式应该类似于
[0-9\-\(\)\s]+
的。它匹配数字、破折号、括号和空格。
如果您需要更严格的内容,只匹配您的示例,请尝试以下操作:
([0-9]{10})|(\([0-9]{3}\)\s+[0-9]{3}\-[0-9]{4})
个xqkwcwgp2#
密码:
字符串
the jQuery Validate plugin中没有任何回调函数、选项、方法或规则称为
matches
。(* 编辑:OP没有提到matches
是他的自定义方法 *)然而,在the
additional-methods.js
file中,有几种电话号码验证方法可以使用。称为phoneUS
的方法应该满足您的模式。由于规则已经验证了长度,因此minlength
和maxlength
是多余的。它也更全面,因为区号和前缀不能以1
开头。型
DEMO:http://jsfiddle.net/eWhkv/
如果出于某种原因,你只是需要在另一个方法中使用正则表达式,你可以从这里开始。
型
ne5o7dgx3#
字符串
演示http://jsfiddle.net/dishantd/JLJMW/496/
s5a0g9ez4#
字符串
支持:
gwo2fgha5#
如果你首先规范化你的数据,那么你就可以避免验证电话号码所需的所有非常复杂的正则表达式。根据我的经验,复杂的正则表达式模式可能有两个不必要的副作用:(1)它们可能会有意外的行为,这将是一个痛苦的调试之后,(2)它们可能比简单的正则表达式模式慢,当你在循环中执行正则表达式时,这可能会变得明显。
通过使正则表达式尽可能简单,你可以降低这些风险,并且你的代码将更容易被其他人遵循,部分原因是它更可预测。以电话号码为例,首先我们可以通过剥离所有非数字来规范化值,如下所示:
第一个月
现在,美国电话号码(或任何其他地区)的正则表达式模式可以简单得多:
/^1?\d{10}$/
个正则表达式不仅简单得多,而且更容易理解:一个值可选地以数字1(美国国家代码)开头,后跟10位数字。如果你想格式化验证值,使其看起来更漂亮,那么你可以使用这个稍微长一点的正则表达式模式:
/^1?(\d{3})(\d{3})(\d{4})$/
个这意味着一个可选的前导数字1后跟三位数字,另外三位数字,并以四位数字结尾。记住每组数字,您可以以任何方式输出它。下面是一个使用jQuery验证的codepen,用于两个地区(新加坡和美国):
http://codepen.io/thdoan/pen/MaMqvZ
0h4hbjxa6#
字符串
3zwjbxry7#
我知道这是一个老帖子,但我想我会分享我的解决方案来帮助别人。
此功能将工作,如果你想有效的10位数的电话号码“美国号码”
字符串
下面介绍一下这个方法怎么用
型
xfyts7mz8#
这是我的工作:
字符串
jei2mxaa9#
我尝试了下面的解决方案,它对我来说很好。
字符串
已尝试以下电话格式: