正则表达式验证

时间:2012-01-10 23:03:31

标签: c# asp.net regex asp.net-mvc-3

大家好我已经查看了许多版本的正则表达式验证但是我不能让它工作,它只会在输入任何文本之前允许某些字母,因此如果没有输入该文本那么什么都不能输入,因为它将显示验证。例如,我尝试过:

[Required]
[RegularExpression("^(?:[www.]|a-z|A-Z|)*$", /*This allows the www. only and nothing else*/ ErrorMessage = "Cars Only")]
public string Cars { get; set; }

我试过了:

[Required]
[RegularExpression("^(?:(ht|f)tp(s?))\://){1}\S+)|a-z|A-Z|)*$", /*This does not work*/
ErrorMessage = "Cars Only")]
public string Cars { get; set; }

许多其他人,但很多粘贴将变得很长。

可以提供任何帮助,因此在输入www.之后可以输入任何内容,但如果未输入www.,则会显示错误消息。

3 个答案:

答案 0 :(得分:3)

“WWW”。匹配:

www\..* // no line start/end criteria
^www\..*$ // line start/end enforced

这是一个处理前缀的更全面的表达式:

^(https?|ftp):\/\/www\..*$

这将匹配:

http://www.test.com 
https://www.test.com 
ftp://www.test.com/test

更好的是,这使前缀成为强制性的,但是“www。”可选的:

^(https?|ftp)\:\/\/(www\.)?.*$

这将匹配:

http://www.test.com
https://www.test.com
ftp://www.test.com/test
http://test.com
https://test.com
ftp://foo.org

仅匹配图像

^(https?|ftp)\:\/\/(www\.)?.*\/[\w\-\+\%]*\.(gif|jpg|jpeg|png)$

这将匹配:

ftp://foo.org/test.png
https://test.com/image.jpg
http://www.bar.com/my-image.png
http://foo.org/my%20image.jpeg
http://foo.org/my%20image%20test_foo.jpeg

这将需要开头的前缀,正斜杠,文件名(允许包含%或+的字母数字字符,下划线,短划线和URL编码值)和有效的图像扩展名。

这不是万无一失的!请记住,可以从任何HTTP处理程序提供图像。该网址可能与图片无关。

其他信息

我同意@Ru​​ss Cam的建议,看看jQuery validator source code,看看实际上有多少种可能性。

用户输入的URL可能是有效的,但不存在;这可以通过简单的请求在服务器端进行检查。

如果您经常需要创建正则表达式,我建议RegexBuddy

我还建议RegExr进行快速在线测试。

答案 1 :(得分:0)

根据您的标准,

[Required]
[RegularExpression(@"^www\..+$", ErrorMessage = "Cars Only")]
public string Cars { get; set; }

您可以在nregex上使用此正则表达式来查看匹配的内容和不匹配的内容。

我怀疑您正在寻找正则表达式来匹配有效的URI吗?如果你是,我会为客户端使用正则表达式(看看 jQuery validate 中的url规则)并为服务器端创建一个Validation属性,将该字符串传递给{ {3}}

答案 2 :(得分:0)

拆分所需的部分(即使www.可选,然后选择后面的选项,但不依赖于www.

[Required]
[RegularExpression("^(?:[www.])(?:|a-z|A-Z|)*$", /*This allows the www. only and nothing else*/ ErrorMessage = "Cars Only")]
public string Cars { get; set; }