big*_*bob 323 javascript regex
目前我有一个输入框,可以检测URL并解析数据.
所以现在,我正在使用:
var urlR = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)
(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url= content.match(urlR);
Run Code Online (Sandbox Code Playgroud)
问题是,当我输入一个URL时www.google.com,它不起作用.当我进入时http://www.google.com,它正在工作.
我的正则表达式不是很流利.谁能帮我?
Dav*_*veo 512
如果要确保URL以HTTP/HTTPS启动,请使用正则表达式:
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
Run Code Online (Sandbox Code Playgroud)
如果您不需要HTTP协议:
[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
Run Code Online (Sandbox Code Playgroud)
要试一试,请参阅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");
}Run Code Online (Sandbox Code Playgroud)
fou*_*fos 172
(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,})
Run Code Online (Sandbox Code Playgroud)
将符合以下情况
http://www.foufos.grhttps://www.foufos.grhttp://foufos.grhttp://www.foufos.gr/kinohttp://werer.grwww.foufos.grwww.mp3.comwww.t.cohttp://t.cohttp://www.t.cohttps://www.t.cowww.aa.comhttp://aa.comhttp://www.aa.comhttps://www.aa.com不符合以下条件
www.foufoswww.foufos-.grwww.-foufos.grfoufos.grhttp://www.foufoshttp://foufoswww.mp3#.comvar 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( "<div >Success: " + entry + "</div>" );
} else {
$("#output").append( "<div>Fail: " + entry + "</div>" );
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="output"></div>Run Code Online (Sandbox Code Playgroud)
Mic*_*nor 47
这些是您正在寻找的机器人.这是从validator.js中获取的,这是您应该真正用来执行此操作的库.但如果你想自己动手,我该阻止你呢?如果你想要纯正的正则表达式,那么你可以拿出长度检查.如果你真的想确定是否符合规范,我认为测试URL的长度是个好主意.
function isURL(str) {
var urlRegex = '^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-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,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$';
var url = new RegExp(urlRegex, 'i');
return str.length < 2083 && url.test(str);
}
Run Code Online (Sandbox Code Playgroud)
Ama*_*ure 23
另一个可能的解决方案,上面的解决方案在解析查询字符串参数时失败了.
var regex = new RegExp("^(http[s]?:\\/\\/(www\\.)?|ftp:\\/\\/(www\\.)?|www\\.){1}([0-9A-Za-z-\\.@:%_\+~#=]+)+((\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\?(.)*)?");
if(regex.test("http://google.com")){
alert("Successful match");
}else{
alert("No match");
}
Run Code Online (Sandbox Code Playgroud)
在此解决方案中,请随意修改[-0-9A-Za-z\.@:%_\+~#=,以匹配域/子域名.在此解决方案中,查询字符串参数也很谨慎.
如果你没有使用RegEx,那么从表达式替换\\为\.
希望这可以帮助.
Rom*_*man 10
试试这个
(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554048 次 |
| 最近记录: |