当前位置:  开发笔记 > 编程语言 > 正文

正则表达式与模式匹配或为空?

如何解决《正则表达式与模式匹配或为空?》经验,为你挑选了1个好方法。

我需要匹配模式的正则表达式或为空.

现在我有一个表达......

"\(?\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); }
}

这就是为什么我需要解决方案在一个表达式中.



1> Kevin Crowel..:

将整个正则表达式包裹在parens中并放置一个?在末尾:

(\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/x)?


实际上......这不行.尾随问号似乎使正则表达式过于宽容.例如,555-1234现在匹配但不应该匹配.
推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有