堆栈溢出中的某个人给了我以下代码:
$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更改为0 0xxxx。不管他们有多少位数,最多15位。
发布于 2012-08-08 16:43:58
正确的准则是:
$output = preg_replace( '/(0|\+?\d{2})(\d{7,14})/', '0$2', $test);即使你有16位数字,在扩展后最多也只能有14位,以解释2位扩展。请注意,这将适用于62以外的更多扩展,如果不需要,请将\d{2}替换为62。
演示
https://stackoverflow.com/questions/11869114
复制相似问题