URL Validation REGEX - URL 只对 http:// 有效
Posted
技术标签:
【中文标题】URL Validation REGEX - URL 只对 http:// 有效【英文标题】:URL Validation REGEX - URL just valid with http:// 【发布时间】:2013-09-05 06:27:32 【问题描述】:工作原理
我有一个输入字段来输入网站的 URL,我想检查它,如果 URL 正常,我会给输入字段一个类(“validated_ok”)并删除一个类(“cf_required”),如果它反过来就错了。
问题
如果用http://
编写的url 应该是正确的,但实际上它只用www
(www.google.ch
) 也是正确的。我必须如何更改正则表达式?
Javascript
// CHECK WEBSITE
$(".cf_required[name='website']").focusout(function()
var myVariable = $(this).val();
if(/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/|www\.)[a-z0-9]+([\-\.]1[a-z0-9]+)*\.[a-z]2,5(:[0-9]1,5)?(\/.*)?$/.test(myVariable))
$(this).addClass("validated_ok").removeClass("cf_required")
else
$(this).removeClass("validated_ok").addClass("cf_required");
);
【问题讨论】:
查看此帖:***.com/questions/833469/regular-expression-for-url 【参考方案1】:^http(s?):\/\/(www\.)?(((\w+(([\.\-]1([a-z]2,)+)+)(\/[a-zA-Z0-9\_\=\?\&\.\#\-\W]*)*$)|(\w+((\.([a-z]2,)+)+)(\:[0-9]1,5(\/[a-zA-Z0-9\_\=\?\&\.\#\-\W]*)*$)))|(([0-9]|[1-9][0-9]|1[0-9]2|2[0-4][0-9]|25[0-5])\.)3(([0-9]|([1-9][0-9]|1[0-9]2|2[0-4][0-9]|25[0-5]+)+)(\/[a-zA-Z0-9\_\=\?\&\.\#\-\W]*)*)((\:[0-9]1,5(\/[a-zA-Z0-9\_\=\?\&\.\#\-\W]*)*$)*))$
In this http is mandatory and it can take port and sub resources also.
e.g http://example.com
https://example.qwerty.com/id
https://example.com:8989
http://example.qwerty.com:8989/id
https://10.1.1.1/id
https://10.1.1.1:9090/id
【讨论】:
【参考方案2】:更短的方式:
(\w*\W*)?\w*(\.(\w)+)+(\W\d+)?(\/\w*(\W*\w)*)*
您可以在这个出色的正则表达式编辑器中对其进行测试:https://regex101.com/
【讨论】:
【参考方案3】:这将起作用:
(?<Protocol>\w+):\/\/(?<Domain>[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*
希望对你有帮助
【讨论】:
【参考方案4】:只需更改您的正则表达式以使 http(s) 成为必需
/^http(s)?:\/\/(www\.)?[a-z0-9]+([\-\.]1[a-z0-9]+)*\.[a-z]2,5(:[0-9]1,5)?(\/.*)?$/.test('www.google.com')
【讨论】:
【参考方案5】:删除|www\.
?
^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)[a-z0-9]+([\-\.]1[a-z0-9]+)*\.[a-z]2,5(:[0-9]1,5)?(\/.*)?$
【讨论】:
以上是关于URL Validation REGEX - URL 只对 http:// 有效的主要内容,如果未能解决你的问题,请参考以下文章
RE validation in Java EE(java.util.regex.Pattern)
RE validation in Java EE(java.util.regex.Pattern)