DataAnnotations RegularExpression - 禁止 URL
DataAnnotations RegularExpression - disallow URLs
我正在尝试在 ASP.NET MVC 中创建一个 DataAnnotation 正则表达式,它将捕获并禁止用户输入的 URL。基本上,我想捕获任何以 http:// 或 https:// 开头的字符串,但我对正则表达式的了解很薄弱。我可以使用以下正则表达式代码匹配包含这些字符串的字符串:
^(http://|https://)
但我不知道如何取反,所以在我的模型中,
[RegularExpression(@"^(http:\/\/|https:\/\/)", ErrorMessage = "Entry should not contain url.")]
returns 如果在字符串的开头找到 http:// 或 https://,则会出现模型错误。
我找到了以下内容:
[正则表达式(@"^(?!.?(https?://)?([\da-z.-]+).([a-z.]{2,6 })([/\w .-])/?).$", ErrorMessage = "Entry should not contain url.")]
它捕获 URL,但不允许字符串中包含句点
有什么想法吗?
谢谢!
您需要使用锚定在开头的否定前瞻:
@"^(?!https?://).*$"
如果不需要完整的字符串匹配,可以这样做:
@"^(?!https?://)"
这里是the regex demo.
请注意,@"^(?!https?://)"
包含紧跟在 ^
(字符串的开头)之后的否定先行 (?!https?://)
。因此,它只是检查 - 就在字符串的开头 - 如果字符串不是以 http://
或 https://
开头(由于在 s
之后设置了 ?
量词,我们可以匹配两种选择)。
您 "found" - ^(?!.*?(https?://)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*/?).*$
- 的正则表达式包含更复杂的先行限制。你可以read what it is doing at regex101.com。句点问题是由于字符 class 和 \.
中的句点引起的 - 如果您输入 2 个句点,然后输入一个逗号,这将使限制失效。它可以用作正则表达式检查字符串不应包含 URL,您需要检查它是否不以 https?://
.
开头
我正在尝试在 ASP.NET MVC 中创建一个 DataAnnotation 正则表达式,它将捕获并禁止用户输入的 URL。基本上,我想捕获任何以 http:// 或 https:// 开头的字符串,但我对正则表达式的了解很薄弱。我可以使用以下正则表达式代码匹配包含这些字符串的字符串:
^(http://|https://)
但我不知道如何取反,所以在我的模型中,
[RegularExpression(@"^(http:\/\/|https:\/\/)", ErrorMessage = "Entry should not contain url.")]
returns 如果在字符串的开头找到 http:// 或 https://,则会出现模型错误。
我找到了以下内容:
[正则表达式(@"^(?!.?(https?://)?([\da-z.-]+).([a-z.]{2,6 })([/\w .-])/?).$", ErrorMessage = "Entry should not contain url.")]
它捕获 URL,但不允许字符串中包含句点
有什么想法吗?
谢谢!
您需要使用锚定在开头的否定前瞻:
@"^(?!https?://).*$"
如果不需要完整的字符串匹配,可以这样做:
@"^(?!https?://)"
这里是the regex demo.
请注意,@"^(?!https?://)"
包含紧跟在 ^
(字符串的开头)之后的否定先行 (?!https?://)
。因此,它只是检查 - 就在字符串的开头 - 如果字符串不是以 http://
或 https://
开头(由于在 s
之后设置了 ?
量词,我们可以匹配两种选择)。
您 "found" - ^(?!.*?(https?://)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*/?).*$
- 的正则表达式包含更复杂的先行限制。你可以read what it is doing at regex101.com。句点问题是由于字符 class 和 \.
中的句点引起的 - 如果您输入 2 个句点,然后输入一个逗号,这将使限制失效。它可以用作正则表达式检查字符串不应包含 URL,您需要检查它是否不以 https?://
.