Java 字符串替换 phone 数字中无效字符的正则表达式
Java string replace regex for invalid characters in a phone number
我正在尝试编写一个正则表达式来替换 phone 号码中的所有无效字符:
示例 phone 个数字:
- +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+]
只是一个字符 class(因此它匹配单个字符,而 +
使其重复该字符 class,并且那么你的模式匹配 literal //g]
字符串。所以,错误的语法。
使用正则表达式无需任何环视即可获得结果。捕获要在替换模式中使用 </code> 反向引用重新插入的字符串开头的加号,并仅匹配所有非数字。</p>
<pre><code>^(\+)|\D+
在Java中:
.replaceAll("^(\+)|\D+", "")
图案详情:
^(\+)
- 第 1 组在字符串开头捕获文字加号
\D+
- 一个或多个数字以外的字符。
我正在尝试编写一个正则表达式来替换 phone 号码中的所有无效字符:
示例 phone 个数字:
- +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+]
只是一个字符 class(因此它匹配单个字符,而 +
使其重复该字符 class,并且那么你的模式匹配 literal //g]
字符串。所以,错误的语法。
使用正则表达式无需任何环视即可获得结果。捕获要在替换模式中使用 </code> 反向引用重新插入的字符串开头的加号,并仅匹配所有非数字。</p>
<pre><code>^(\+)|\D+
在Java中:
.replaceAll("^(\+)|\D+", "")
图案详情:
^(\+)
- 第 1 组在字符串开头捕获文字加号\D+
- 一个或多个数字以外的字符。