在http://www.regexr.com/的帮助下,我创建了这个preg_replace:
preg_replace("/\+[\d]{2}|\(0\)|\(|\)|\s/","",$number);
更改任何
+27123456789
+27 12 345 6789
(+27)123456789
(+27) 12 345 6789
+27 (0) 12 345 6789
+27(0)123456789
012 345 6789
0123456789
转换为0123456789
(南非电话号码格式)
然而,它并没有改变这两者,无论我如何设置它,它都不想工作:
27 (0) 12 345 6789
27(0)123456789
如何更改正则表达式匹配以便它们也适用于那些?
答案 0 :(得分:1)
你可以通过一些通行证来更容易操作。单击示例以查看可视化。
\+[\d]{2}|[()]
删除+27
,(
和)
。 Example [ ]+
删除其间的所有空格。 Example (^\d{9}(?=$))
替换0\1
以添加 0 ,如果它只有9位数字。 <强> EDIT1:强>
正如@Alan Moore指出的那样,我们不需要提前看$。所以(^\d{9}$)
就足够了。 Example
<强> EDIT2:强>
由于作者想匹配27(0)...
,只需添加一个额外的步骤4,如下所示。
270?(\d{9})
替换为0\1
。匹配以27(0)开头的数字,并替换为0和最后9位数字。 Example 注意:您需要为前两个启用“ g ”修饰符,为最后一个启用“ gm ”修饰符。我们需要 m ,因为我们想在每行的开头匹配^
。