【发布时间】:2013-08-11 08:19:50
【问题描述】:
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 个。
【问题讨论】:
-
等等,您需要它最多有效 15 位还是正好 15 位? {15} 表示正好是 15。{7,15} 表示 7 到 15 位(含)之间。
-
你的代码应该做什么?
-
@BlackVegetable :检查我的更新。我在帖子中添加了一些新信息。