首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此RegEx仅适用于8位电话号码,如何使其适用于15位数字?

此RegEx仅适用于8位电话号码,如何使其适用于15位数字?
EN

Stack Overflow用户
提问于 2012-08-08 16:36:26
回答 1查看 486关注 0票数 0

堆栈溢出中的某个人给了我以下代码:

代码语言:javascript
复制
$output = preg_replace( '/(\+?\d{2}|0)(\d{7,8})/', '0$2', $test);

它改变了用户输入:

+622112345改为02112345 622112345到02112345 02112345到02112345

不幸的是,它只适用于7-8位数。我决定将代码更改为:

代码语言:javascript
复制
$output = preg_replace( '/(\+?\d{2}|0)(\d{15})/', '0$2', $test);

通过将(\d{7,8})转换为(\d{15}),我希望能够得到这个RegEx来验证多达15位数字。但是,我现在拥有的是:

代码语言:javascript
复制
input : 083812345678910 >> output : 083812345678910 [correct]

input : 6283812345678910 >> output : 6283812345678910 [false, should be : 083812345678910]

input : +6283812345678910 >> output : 6283812345678910 [false, should be : 083812345678910]

我怎样才能使它在15位数字上工作呢?谢谢。

更新:用户输入可以是10,11,12甚至13位数字。但不超过15位数。因此,我需要这段代码将前缀:+62、62或0更改为0 0xxxx。不管他们有多少位数,最多15位。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-08 16:43:58

正确的准则是:

代码语言:javascript
复制
$output = preg_replace( '/(0|\+?\d{2})(\d{7,14})/', '0$2', $test);

即使你有16位数字,在扩展后最多也只能有14位,以解释2位扩展。请注意,这将适用于62以外的更多扩展,如果不需要,请将\d{2}替换为62

演示

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

https://stackoverflow.com/questions/11869114

复制
相关文章

相似问题

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