【发布时间】:2015-08-23 21:44:31
【问题描述】:
我正在尝试使用格式为 +44 或 +4 后跟任意数量的数字或连字符的电话号码,并将 +44 或 +4 替换为 +44 或 +4 后跟空间。
我相信我需要环顾四周以匹配完整的数字,但只替换初始前缀,我正在尝试 atm 是
^[+]\d[0-9](?:([0-9]+))?
与数字匹配(不带连字符),但我认为前瞻只会匹配数字而不捕获额外的数字,但它似乎捕获了整个内容。
谁能指出我做错了什么的正确方向?
编辑: 为了更清楚,我的 Java 代码是
Pattern pattern = Pattern.compile("^[+]\\d[0-9](?:([0-9]+))?");
if(pattern.matcher("+441234567890").matches())
String num = pattern.matcher(title).replaceFirst("$0 $1");
谢谢。
【问题讨论】:
-
您没有答案所需要的可靠前提或规则。这就是为什么它不适合你。
-
您不需要使用
matches,如果replaceFirst找不到匹配项,则会返回初始字符串。您只需要 1 个正则表达式即可替换:String num = Pattern.compile("^([+]\\d\\d?)([\\d-]*)$").matcher(title).replaceFirst("$1 $2");.