2011-06-15 39 views
0

请谁能帮我这个正则表达式模式从JavaScript转换为C#请谁能帮我这个正则表达式模式从JavaScript转换为C#

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

我需要验证电话号码,我带你去来自textbox的价值和我将它与正则表达式模式进行比较,我需要专门转换此模式,因为这种模式将解决几乎大部分的国家电话模式,如英国,美国,eurpoe,印度等。

这是我的c#代码

Regex REphone = new Regex(@" c# pattern here"); 
if (REphone.IsMatch(TextBox_Phone.Text)) { 
    // ... 
} else { 
    // ... 
} 
+0

到目前为止,您为.NET正则表达式尝试了些什么?它以什么方式不起作用? – Richard 2011-06-15 15:26:10

+0

Regex REphone = new Regex(@“^(([^ \。\ - \,a-wy-z]([\(]?(\ + | [x])?\ d + [\]]?)? [\ S \ \ - \,]([\(] \ d + [\)]?)\ S \ \ - \,]?(\ d + [\ S \ \ - \,]? ?)+ [^ \。\ - \,az])|((\ + | [x])?\ d +))$“, 我试过这个,但是没有工作总是继续下去, – 2011-06-15 15:50:44

回答

3
new Regex(@"^(([^\.\-\,a-wy-z]([\(]?(\+|[x])?\d+[\)]?)?[\s\.\-\,]?([\(]?\d+[\)]?)?[\s\.\-\,]?(\d+[\s\.\-\,]?)+[^\.\-\,a-z])|((\+|[x])?\d+))$", 
     RegexOptions.IgnoreCase); 

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

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

+0

谢谢veeeeeeeeeeeeeeeeeeeeeeeeeeery它真的有效 – 2011-06-15 15:58:19

+0

@fatma mansour:如果丹尼尔的答案满意地解决您的问题,你真的应该考虑标记为接受。 – 2011-06-15 16:47:21

+0

好的,谢谢我接受它 – 2011-06-18 08:33:42

1

JavaScript使用/限定正则表达式,并且C#不使用分隔符(您将它作为字符串传递,因此在技术上可以说它由双引号"分隔)。

此外,在C#字符串中,请记住您必须将\的反斜杠转换为\\

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

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

如果你要在把它作为一个字符串(通过使用在它前面的@),那么你就不需要逃跑反斜杠。

+0

我试过@和\\它不工作在我这是语法有效的C# – 2011-06-15 15:37:34