Stack Overflow中的某个人给了我这段代码:
$output = preg_replace( '/(\+?\d{2}|0)(\d{7,8})/', '0$2', $test);
它改变了用户输入:
+622112345进入02112345
622112345进入02112345
02112345进入02112345
不幸的是它仅适用于7-8位数。我决定将代码更改为:
$output = preg_replace( '/(\+?\d{2}|0)(\d{15})/', '0$2', $test);
将(\d{7,8})
更改为(\d{15})
,我希望我可以让此RegEx最多验证15位数。但是,这就是我所拥有的:
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 INTO 0xxxx。无论他们有多少位数,最多15位。
答案 0 :(得分:2)
正确的正则表达式是:
$output = preg_replace( '/(0|\+?\d{2})(\d{7,14})/', '0$2', $test);
即使您有16位数字,但在分机号码后最多只能有14位数字,以占2位数的分机号码。请注意,这将适用于62
以外的其他扩展程序,如果不需要,请将\d{2}
替换为62
。