嗨,伙计们,我看过很多版本的正则表达式验证,但我不能让它工作,在输入文本之前,它只允许在开始时输入特定的字母,因此,如果不输入该文本,则不能输入任何内容,因为它将显示验证。例如,我尝试过:
[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.,则会显示错误消息。
发布于 2012-01-11 07:06:56
"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处理程序都可以提供图像。其中可能没有任何与图像相关的内容。
附加信息
我同意@Russ Cam的建议,看看jQuery validator source code,看看有多少种可能性。
用户输入的URL可能是有效的表单,但不存在;这可以通过一个简单的请求在服务器端进行检查。
如果您经常需要创建正则表达式,我推荐使用RegexBuddy。
我还推荐使用RegExr进行快速在线测试。
发布于 2012-01-11 07:06:58
根据你的标准,
[Required]
[RegularExpression(@"^www\..+$", ErrorMessage = "Cars Only")]
public string Cars { get; set; }您可以在上使用这个正则表达式来查看哪些匹配,哪些不匹配。
我怀疑您正在寻找与有效URI匹配的正则表达式?如果是,我将对客户端使用正则表达式(看看中的url规则),并为将字符串传递到Uri.IsWellFormedUriString(string uri, UriKind.Absolute)的服务器端创建一个验证属性
发布于 2012-01-11 07:07:07
拆分所需的部分(即,将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; }https://stackoverflow.com/questions/8811836
复制相似问题