Java字符串替换电话号码中无效字符的正则表达式

Zba*_*ian 1 java regex phone-number

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

电话号码示例:

  • +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]", "");
Run Code Online (Sandbox Code Playgroud)

Luc*_*ski 7

使用这个: [^\d+]|(?!^)\+

phone = phone.replaceAll("[^\\d+]|(?!^)\\+", "");
Run Code Online (Sandbox Code Playgroud)
  • [^\d+] 匹配不是数字或字符的字符 +
  • (?!^)\+匹配+那些字符不是字符串的开始

在你当前的正则表达式中,[/(?<!^)\+|[^\d+]它只是一个字符类(所以它匹配单个字符,并+使它重复该字符类,然后你的模式匹配文字 //g]字符串.所以,语法错误.