什么是匹配URL的好的正则表达式?[重复]
什么是匹配URL的好的正则表达式?[重复]
此问题已经有答案了:
目前我有一个输入框,可以检测URL并解析数据。
所以现在,我正在使用:
var urlR = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+) (?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; var url= content.match(urlR);
问题是,当我输入例如www.google.com
的URL时,它不起作用。当我输入http://www.google.com
时,它才能工作。
我对正则表达式不是很熟练。有谁可以帮助我吗?
admin 更改状态以发布 2023年5月24日
(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})
会匹配以下情况
http://www.foufos.gr
https://www.foufos.gr
http://foufos.gr
http://www.foufos.gr/kino
http://werer.gr
www.foufos.gr
www.mp3.com
www.t.co
http://t.co
http://www.t.co
https://www.t.co
www.aa.com
http://aa.com
http://www.aa.com
https://www.aa.com
不会匹配以下情况
www.foufos
www.foufos-.gr
www.-foufos.gr
foufos.gr
http://www.foufos
http://foufos
www.mp3#.com
var expression = /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi; var regex = new RegExp(expression); var check = [ 'http://www.foufos.gr', 'https://www.foufos.gr', 'http://foufos.gr', 'http://www.foufos.gr/kino', 'http://werer.gr', 'www.foufos.gr', 'www.mp3.com', 'www.t.co', 'http://t.co', 'http://www.t.co', 'https://www.t.co', 'www.aa.com', 'http://aa.com', 'http://www.aa.com', 'https://www.aa.com', 'www.foufos', 'www.foufos-.gr', 'www.-foufos.gr', 'foufos.gr', 'http://www.foufos', 'http://foufos', 'www.mp3#.com' ]; check.forEach(function(entry) { if (entry.match(regex)) { $("#output").append( "Success: " + entry + "" ); } else { $("#output").append( "Fail: " + entry + "" ); } });
如果您希望确保URL以HTTP/HTTPS开头的正则表达式:
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
如果您不需要HTTP协议:
[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
要尝试此功能,请查看http://regexr.com?37i6s,或者采用较少限制的版本http://regexr.com/3e6m0。
JavaScript示例实现:
var expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; var regex = new RegExp(expression); var t = 'www.google.com'; if (t.match(regex)) { alert("Successful match"); } else { alert("No match"); }