首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式验证

正则表达式验证
EN

Stack Overflow用户
提问于 2012-01-11 07:03:31
回答 3查看 1.5K关注 0票数 1

嗨,伙计们,我看过很多版本的正则表达式验证,但我不能让它工作,在输入文本之前,它只允许在开始时输入特定的字母,因此,如果不输入该文本,则不能输入任何内容,因为它将显示验证。例如,我尝试过:

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

我试过了:

代码语言:javascript
复制
[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.,则会显示错误消息。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-11 07:06:56

"www.“匹配:

代码语言:javascript
复制
www\..* // no line start/end criteria
^www\..*$ // line start/end enforced

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

代码语言:javascript
复制
^(https?|ftp):\/\/www\..*$

这将匹配:

代码语言:javascript
复制
http://www.test.com 
https://www.test.com 
ftp://www.test.com/test

更好的是,这使得前缀是强制的,但是"www.“可选:

代码语言:javascript
复制
^(https?|ftp)\:\/\/(www\.)?.*$

这将匹配:

代码语言:javascript
复制
http://www.test.com
https://www.test.com
ftp://www.test.com/test
http://test.com
https://test.com
ftp://foo.org

仅匹配图像

代码语言:javascript
复制
^(https?|ftp)\:\/\/(www\.)?.*\/[\w\-\+\%]*\.(gif|jpg|jpeg|png)$

这将匹配:

代码语言:javascript
复制
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处理程序都可以提供图像。其中可能没有任何与图像相关的内容。

附加信息

我同意@Russ Cam的建议,看看jQuery validator source code,看看有多少种可能性。

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

如果您经常需要创建正则表达式,我推荐使用RegexBuddy

我还推荐使用RegExr进行快速在线测试。

票数 3
EN

Stack Overflow用户

发布于 2012-01-11 07:06:58

根据你的标准,

代码语言:javascript
复制
[Required]
[RegularExpression(@"^www\..+$", ErrorMessage = "Cars Only")]
public string Cars { get; set; }

您可以在上使用这个正则表达式来查看哪些匹配,哪些不匹配。

我怀疑您正在寻找与有效URI匹配的正则表达式?如果是,我将对客户端使用正则表达式(看看中的url规则),并为将字符串传递到Uri.IsWellFormedUriString(string uri, UriKind.Absolute)的服务器端创建一个验证属性

票数 0
EN

Stack Overflow用户

发布于 2012-01-11 07:07:07

拆分所需的部分(即,将www.设置为可选,然后将其后面的部分设置为可选,但不依赖于www.

代码语言:javascript
复制
[Required]
[RegularExpression("^(?:[www.])(?:|a-z|A-Z|)*$", /*This allows the www. only and nothing else*/ ErrorMessage = "Cars Only")]
public string Cars { get; set; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8811836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档