请任何人帮我把这个正则表达式模式从javascript转换成c

please can anyone help me to convert this regular expression pattern from javascript to c#

本文关键字:模式 javascript 转换 正则表达式 任何人      更新时间:2023-09-26

请有人帮我把这个正则表达式模式从javascript转换成c#

 var phonePattern = /^(([^'.'-',a-wy-z](['(]?('+|[x])?'d+[')]?)?['s'.'-',]?(['(]?'d+[')]?)?['s'.'-',]?('d+['s'.'-',]?)+[^'.'-',a-z])|(('+|[x])?'d+))$/i

我需要验证电话号码,我将从文本框中获取值,并将其与regex模式进行比较。我需要特别转换此模式,因为此模式将解决几乎大多数国家/地区的电话模式,如英国、美国、欧洲、印度等。

这是我的c#代码

Regex REphone = new Regex(@" c# pattern here");
if (REphone.IsMatch(TextBox_Phone.Text)) {
    // ...
} else {
    // ...
}
new Regex(@"^(([^'.'-',a-wy-z](['(]?('+|[x])?'d+[')]?)?['s'.'-',]?(['(]?'d+[')]?)?['s'.'-',]?('d+['s'.'-',]?)+[^'.'-',a-z])|(('+|[x])?'d+))$",
        RegexOptions.IgnoreCase);

模式本身是相同的,但在@""之间引用,而不是在//之间引用。

RegexOptions.IgnoreCase使匹配不区分大小写,这相当于JavaScript正则表达式文字末尾的i标志。

JavaScript使用/分隔正则表达式,而C#不使用分隔符(您将其作为字符串传入,因此从技术上讲,可以说它由双引号"分隔)。

此外,在C#字符串中,请记住必须将反斜杠从'转义为''

所以你的正则表达式应该是这样的-

"^(([^''.''-'',a-wy-z]([''(]?(''+|[x])?''d+['')]?)?[''s''.''-'',]?([''(]?''d+['')]?)?[''s''.''-'',]?(''d+[''s''.''-'',]?)+[^''.''-'',a-z])|((''+|[x])?''d+))$"

如果要将其作为字符串文字传递(通过在其前面使用@),则不需要转义反斜杠。