我需要匹配模式的正则表达式或为空.
现在我有一个表达......
"\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/x"
...匹配美国电话号码.但是,它对我正在测试的字符串是空的有效.如果字符串中包含任何值,则它必须与表达式匹配.
我有其他模式符合美国邮政编码等需要相同条件的模式.
在同一个表达式中实现此目的的最佳方法是什么?
澄清:我在Microsoft的验证应用程序块中使用了RegexValidator.使用它的一个例子如下:
[StringLengthValidator(0, 100, MessageTemplate = "Email must be between {3} and {5}")] [RegexValidator(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", MessageTemplate = "Valid Email Required.")] public string EmailAddress { get { return _EmailAddress; } set { SetValue(ref _EmailAddress, value); } }
这就是为什么我需要解决方案在一个表达式中.
将整个正则表达式包裹在parens中并放置一个?在末尾:
(\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/x)?