正则表达式以更改电话号码的形式

问题描述 投票:0回答:2

我正在尝试使用正则表达式来更改电话号码格式。以下示例显示了原始格式以及应如何更改:

((216)765 8765 --->电话:216-7658765

我尝试使用以下代码:

data = data.replaceAll("([0-9]{3})|([\\s\\./0-9])*$","$1"+"-"+"$2");

但是它不能解决问题。

java regex
2个回答
0
投票

您的正则表达式是错误的:)您应该得到一些有关错误转义序列的编译错误。

所以首先是您的错误:

  • 您为(216)做的第一场比赛在技术上是正确的,但顺序要删除(),还需要在其中匹配:\(([0-9]{3})\)
  • 您的第二个匹配很糟糕:)首先,如果要在字符串中使用\ s,大多数语言会认为您想转义“ s”。因此,大多数时候您需要转义\本身。所以\ s
  • 我不知道什么管道|是给的,但是你可以把它放一个空格。

工作示例:

data.replaceAll("\\(([0-9]{3})\\) ([\\s0-9]+)*$","$1-$2")

https://code.sololearn.com/cVRUy2BwauK8#java


0
投票

除非您真的想,否则请不要发明轮子。看看这个libhttps://github.com/google/libphonenumber

© www.soinside.com 2019 - 2024. All rights reserved.