从正则表达式中删除特殊字符以格式化电话号码的问题

客房

致力于在 .rdl 报告中格式化电话号码。我在报告字段的表达式属性中有下面的正则表达式。来自用户的可能输入 - 720) 352-6511 , +1 (469) 292-4242, 310.614.1316, (310) 468-0516

所需输出 - (303) 233-2345

My regex =System.Text.RegularExpressions.Regex.Replace(IIf(IsNothing(Fields!Contact_Phone.Value), "", Fields!Contact_Phone.Value), "(\d{3})[ -.]*(\d{3})[ -.]*(\d{4})", "($1) $2-$3")

我的输出 - ((303) 233-2345

开头有一个额外的开括号,我累了的其他选项不起作用。

谢谢

维克多·斯特里比尤夫

这是解决此问题的一种非常通用的方法:匹配输入文本中可能的项目之间的任何非数字字符,并捕获在输入中看起来必须的三个部分:

^[^\d+]*(?:\+\D*\d+\D+)?(\d{3})\D*(\d{3})\D*(\d{4})\D*$

请参阅正则表达式演示详情

  • ^ - 字符串的开始
  • [^\d+]* - 除数字外的零个或多个字符和 +
  • (?:\+\D*\d+\D+)?- 一个可选序列+,零个或多个非数字,一个或多个数字,一个或多个非数字
  • (\d{3}) - 第 1 组:三位数
  • \D* - 零个或多个非数字
  • (\d{3}) - 第 2 组:三位数
  • \D* - 零个或多个非数字
  • (\d{4}) - 第 3 组:四位数
  • \D* - 零个或多个非数字
  • $ - 字符串的结尾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章