首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修改电话号码的正则表达式并只接受数字

如何修改电话号码的正则表达式并只接受数字
EN

Stack Overflow用户
提问于 2011-09-01 23:08:54
回答 6查看 6.3K关注 0票数 0

我为jquery验证插件提供了以下regex方法。

代码语言:javascript
运行
复制
jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ""); 
    return this.optional(element) || phone_number.length > 9 &&
        phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");

目前,其验证的电话号码格式为: 203-123-1234

我需要像这样进行更改以验证: 2031231234

有没有人能给我一个简单快捷的解决方案?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-09-01 23:13:14

你可以替换

代码语言:javascript
运行
复制
phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);

有了这个

代码语言:javascript
运行
复制
phone_number.match(/\d{10}/);

\d表示匹配任意数字

{10}意味着10倍

票数 3
EN

Stack Overflow用户

发布于 2011-09-01 23:10:41

去掉所有这些-?序列可能是最快的方法--它们意味着0个或1个-字符。

这将使其简化为:

代码语言:javascript
运行
复制
/^(1)?(\([2-9]\d{2}\)|[2-9]\d{2})[2-9]\d{2}\d{4}$/

可以进一步简化为:

代码语言:javascript
运行
复制
/^1?(\([2-9]\d{2}\)|[2-9]\d{2})[2-9]\d{6}$/

如果您还想禁用区号周围的括号,您可以进一步简化为:

代码语言:javascript
运行
复制
/^1?[2-9]\d{2}[2-9]\d{6}$/

(从技术上讲,它不会与文字203-123-1234匹配,因为紧跟在第一个-后面的字符必须是2到9,所以我假设您只是在谈论格式,而不是那里的值)。

票数 2
EN

Stack Overflow用户

发布于 2011-09-01 23:13:05

我认为更好的方法是用更简单的版本改变整个表达式,如下所示:

代码语言:javascript
运行
复制
/^[0-9]{10}$/

编辑,备注(请参阅注释):

这只是一个如何验证格式的有限示例:111-222-3333vs 1112223333,而不是正确的美国电话号码验证。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7272359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档