我正在尝试编写一个正则表达式来替换电话号码中的所有无效字符:
示例电话号码:
- +36 00 211 1111 -> +36002111111
- +49 03 691 4193 -> +49036914193
- +36 00 211 1111 -> +36002111111
- 06 78 90 12 34 -> 0678901234
只有当“+”是字符串中的第一个字符时,正则表达式才应该允许它,其余的只能是数字类型 [0-9]
这是我当前的正则表达式:
phone = phone.replaceAll("[/(?<!^)\+|[^\d+]+//g]", "");
最佳答案
使用这个:[^\d+]|(?!^)\+
phone = phone.replaceAll("[^\\d+]|(?!^)\\+", "");
-
[^\d+]
匹配不是数字或+
的字符 -
(?!^)\+
火柴+
不在字符串开头的字符
在您当前的正则表达式中,[/(?<!^)\+|[^\d+]
只是一个字符类(所以它匹配单个字符,+
让它重复那个字符类,然后你的模式匹配文字 //g]
字符串。所以,错误的语法。
关于Java字符串替换电话号码中无效字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38803068/