我正在尝试使用方案和域名(类似http://www.domainname.com
)来验证网址。我正在使用这个正则表达式:
/^(http|https):\/\/[\w.\-]+\.[A-Za-z]{2,6}/
当我输入http://www.ab
时,最多6个字符,它返回true,在该长度之后返回false。我该如何处理这种情况?
答案 0 :(得分:0)
你可以使用这样的正则表达式:https?:\/\/www\..*?\.(com|uk|in)
(你必须在结尾指定你想要匹配的内容。
答案 1 :(得分:0)
试试这个:
^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
在此测试:https://regex101.com/r/xR0oV9/1
让我纠正你的模式,仅供参考。
(http|https)
代替(https?)
短得多http
因为s
部分将在两种情况下都有,[A-Za-z]
是可选的。
而不是:[a-z]
您可以使用小写字母:i
并在模式的末尾添加/
修饰符(在最后一次斜杠{{1}}之后)将意味着不区分大小写的匹配。
答案 2 :(得分:0)
来自diegoperini的这个可能有点长,但因此它几乎是完美的(至少在我眼里)。
_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS
如果你想在C#中使用它,你必须稍微改变它。我已经在不久前做过这个了。
^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$