string Phno=txt_EditPhno.Text;
bool check = false;
Regex regexObj = new Regex(@"^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$");
if ((String.IsNullOrEmpty(Phno))||(regexObj.IsMatch(Phno)))
{}
我正在使用这个正则表达式来允许电话号码允许,空格,-,() 但是它不允许上面提到的任何符号,这是我使用的正则表达式错误还是我在做错误的方式
最佳答案
您列出的 RegEx 字符串工作正常:
System.Text.RegularExpressions.Regex regexObj = new System.Text.RegularExpressions.Regex(@"^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$");
regexObj.IsMatch("(555)-867-5309")
true
regexObj.IsMatch("+15558675309")
true
regexObj.IsMatch("+1.555.867.5309")
true
regexObj.IsMatch("+15558675309ext12345")
true
regexObj.IsMatch("+15558675309x12345")
true
您的代码中的错误必须在其他地方。您始终可以使用 RegExLib.com 之类的工具测试您的 RegEx。
关于c# - 验证电话号码以允许 () 和空格,但我使用的正则表达式不允许输入这些。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8049932/