从正则表达式中删除特殊字符以格式化 phone 数字的问题
Issue in removing a special character from regex to format the phone number
正在努力格式化 .rdl 报告中的 phone 数字。我在报告字段的表达式 属性 中有下面的正则表达式。
来自用户的可能输入 - 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})", "() -")
我的输出 - ((303) 233-2345
开头有一个额外的左括号,我厌倦的其他选项不起作用。
谢谢
这是解决此问题的一种非常通用的方法:匹配输入文本中可能的项目之间的任何非数字字符,并捕获输入中看起来必须的三个部分:
^[^\d+]*(?:\+\D*\d+\D+)?(\d{3})\D*(\d{3})\D*(\d{4})\D*$
见regex demo。 详情:
^
- 字符串开头
[^\d+]*
- 除数字和 +
以外的零个或多个字符
(?:\+\D*\d+\D+)?
- +
的可选序列,零个或多个非数字,一个或多个数字,一个或多个非数字
(\d{3})
- 第 1 组:三位数
\D*
- 零个或多个非数字
(\d{3})
- 第 2 组:三位数
\D*
- 零个或多个非数字
(\d{4})
- 第 3 组:四位数
\D*
- 零个或多个非数字
$
- 字符串结尾。
正在努力格式化 .rdl 报告中的 phone 数字。我在报告字段的表达式 属性 中有下面的正则表达式。 来自用户的可能输入 - 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})", "() -")
我的输出 - ((303) 233-2345
开头有一个额外的左括号,我厌倦的其他选项不起作用。
谢谢
这是解决此问题的一种非常通用的方法:匹配输入文本中可能的项目之间的任何非数字字符,并捕获输入中看起来必须的三个部分:
^[^\d+]*(?:\+\D*\d+\D+)?(\d{3})\D*(\d{3})\D*(\d{4})\D*$
见regex demo。 详情:
^
- 字符串开头[^\d+]*
- 除数字和+
以外的零个或多个字符
(?:\+\D*\d+\D+)?
-+
的可选序列,零个或多个非数字,一个或多个数字,一个或多个非数字(\d{3})
- 第 1 组:三位数\D*
- 零个或多个非数字(\d{3})
- 第 2 组:三位数\D*
- 零个或多个非数字(\d{4})
- 第 3 组:四位数\D*
- 零个或多个非数字$
- 字符串结尾。