检查字符串是否以两个数字开头 - 正则表达式

时间:2014-09-18 13:55:47

标签: regex preg-replace

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

如何更改正则表达式匹配以便它们也适用于那些?

1 个答案:

答案 0 :(得分:1)

你可以通过一些通行证来更容易操作。单击示例以查看可视化。

  1. \+[\d]{2}|[()]删除+27()Example
  2. [ ]+删除其间的所有空格。 Example
  3. (^\d{9}(?=$))替换0\1以添加 0 ,如果它只有9位数字。
  4. <强> EDIT1: 正如@Alan Moore指出的那样,我们不需要提前看$。所以(^\d{9}$)就足够了。 Example

    <强> EDIT2: 由于作者想匹配27(0)...,只需添加一个额外的步骤4,如下所示。

    1. 270?(\d{9})替换为0\1。匹配以27(0)开头的数字,并替换为0和最后9位数字。 Example
    2. 注意:您需要为前两个启用“ g ”修饰符,为最后一个启用“ gm ”修饰符。我们需要 m ,因为我们想在每行的开头匹配^