在我的asp.net应用程序中,我使用正则表达式限制允许的URL格式。我需要创建正则表达式,不允许在URL中使用相邻的破折号
01)允许像
这样的网址text1-text2.htm
text1-text2-textn.htm
02)阻止像
这样的URLtext1--text2.htm
text1--text2-textn.htm
答案 0 :(得分:1)
试试这个正则表达式:
/--/
如果您找到匹配项,则表示该网址有两个破折号。
答案 1 :(得分:1)
url.Contains("--")
将适用于您,其中url
变量是输入的网址。简洁明了,你不必大惊小怪。
答案 2 :(得分:1)
Aziz发布的否定答案是最好的,但为了完整起见,这里的正则表达式与您希望接受的字符串类型相匹配(而不是拒绝):
您需要一个由零个或多个以下内容组成的字符串:
正则表达式是
/^(?:[^-]|-(?!-))*$/
现在你可以调整[^ - ]部分,不仅接受任何字符,而只接受 URL中允许的那些字符(也就是说,如果你想匹配 all可能的网址除了连续两个破折号之外的网址。为此,您必须找到提供URI语法的RFC。会有点单调乏味,这就是为什么/--/
与其他支票相结合的否定解决方案是你最好的选择。
答案 3 :(得分:0)
应该足以搜索问题-{2,}
,然后做出否定。即只要这个正则表达式(连续两个或多个破折号)不匹配,它就是有效的。
正面正则表达式仅匹配您想要的网址:^([A-Za-z0-9]+-?)+\.htm$
答案 4 :(得分:0)
这将匹配一个文件名,其中包含0个或更多个短划线,后跟一些单词字符。
^\w+(-\w+)*\.\w+