致力于在 .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] 删除。
我来说两句