Java 字符串替换 phone 数字中无效字符的正则表达式

Java string replace regex for invalid characters in a phone number

我正在尝试编写一个正则表达式来替换 phone 号码中的所有无效字符:

示例 phone 个数字:

只有当“+”是字符串中的第一个字符时,正则表达式才应允许使用该符号,其余仅允许数字类型[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+ - 一个或多个数字以外的字符。