正则表达式验证
本文关键字:验证 正则表达式 | 更新日期: 2023-09-27 18:19:53
大家好,我看过很多版本的正则表达式验证,但在输入任何文本之前,它只允许在开头输入某些字母,因此如果不输入该文本,则无法输入任何内容,因为它将显示验证。例如,我尝试过:
[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.
,则会显示错误消息。
"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处理程序提供图像。URL中可能没有任何与图像相关的内容。
附加信息
我同意@RussCam的建议,看看jQuery验证器的源代码,看看实际上有多少可能性。
用户输入的URL可能是有效的,但不存在;这可以通过一个简单的请求在服务器端进行检查。
如果您经常需要创建正则表达式,我推荐RegexBuddy。
我还推荐RegExr进行快速在线测试。
根据您的标准,
[Required]
[RegularExpression(@"^www'..+$", ErrorMessage = "Cars Only")]
public string Cars { get; set; }
您可以在nregex上使用此regex来查看哪些匹配,哪些不匹配。
我怀疑您正在查找与有效URI匹配的正则表达式?如果是,我会为客户端使用regex(查看jQuery validate中的url规则),并为服务器端创建一个Validation属性,该属性将字符串传递到Uri.IsWellFormedUriString(string uri, UriKind.Absolute)
拆分所需的部分(即使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; }