正确匹配URL的正则表达式

网上流传着多种匹配URL的正则表达式版本,但我经过试验,最好用的还是从stackoverflow上查到的:

(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

IP地址、前后有汉字、带参数的,都是OK的。

另外几个有问题的版本:

摘自微软MSDN:

(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\‘\/\\\+&%\$#_]*)?

带参数的匹配有问题。

百度知道中有人回答的

http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

有严重的汉字问题。

另外,如果只是想匹配URL中的域名部分,则可以用这个:

((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌?w.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?‌?(?:[\w]*))?)

时间: 2024-10-05 21:47:54

正确匹配URL的正则表达式的相关文章

匹配url的正则表达式

在javascript语言精粹 看到url的正则,将其记录下来 var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; var url = "http://www.ora.com:80/goodparts?q#fragment"; 执行 具体代码见下述: var url = "http://www.ora

正则表达式匹配URL——给URL地址加上<a> 链接

<?php function replace_url ($content) { if (empty($content)) return; //给URL地址加上 <a> 链接 $preg = '/(?:http:\/\/)?([\w.]+[\w\/]*\.[\w.]+[\w\/]*\??[\w=\&\+\%]*)/is'; $content = preg_replace($preg, '<a href="http://\1" target="_b

匹配URL

使用一个不错的正则表达式来配对一个正确的url. string reg = @"(?i)(http://|https://)?(\w+\.){1,3}(com(\.cn)?|cn|net|info|org|us|tk)\b"; 比较通用 string reg = @"(?i)(http://|https://)?(\w+\.){1,3}(com(\.cn)?|cn|net|info|org|us|tk)\b"; Regex r = new Regex(reg); t

js正则表达式之解析——URL的正则表达式

首先,此片文章并不是直接告诉你,url的正则表达式是什么,以及怎么使用这个正则表达式去解析一个URL地址,相信这种问题在网络上已经能找到很多.本文的宗旨在于教你如何理解URL的正则表达式,以达到理解正则表达式,以及能够在日后的工作中写出相对简单的正则.言归正传,先看看一下的例子: var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*)

java匹配中文的正则表达式

[\u4E00-\u9FA5]* public static void regxChinese(){ // 要匹配的字符串 String source = "<span title='5 星级酒店' class='dx dx5'>"; // 将上面要匹配的字符串转换成小写 // source = source.toLowerCase(); // 匹配的字符串的正则表达式 String reg_charset = "<span[^>]*?title=\'

正则匹配URL地址

/** * @ 匹配URL地址 */ function isURLAddress(url) { var urlreg=/^((https|http|ftp|rtsp|mms)?:\/\/)+[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/ if (!urlreg.test(url)){ return false }else{ return true; } }

读取csv文件和匹配时间的正则表达式

今天又和前端联调了一天的程序,比较烦.产品有个需求是日期和时间分开显示的,正常都是两个连在一起然后用空格隔开,因为要想校验时间的对错,就需要把传过来的时间用strtotime转换成时间戳,然后在用date转换成时间格式,但是若是传的时间格式不对,那么最后转换成的时间就是unix的初始时间08:00:00,这样存在一个问题就是万一活动的开始时间就是08:00:00呢?所以我就把日期和时间放在一起转成时间戳,因为不管日期还是是时间出错,只要有一个错的传换回来的日期已一定会是1970-01-01,所以

匹配url 添加为a标签

var reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g; if(str.indexOf('<a href=')==-1){  // 过滤下a标签 str= str.replace(reg, "<a href='$1$2'>$1$2</a>"); } 2.文本换行处理 breakStr(str) { var regBr = /(\r\n)|(\n)|(\?)/g; str = str.toS

nginx利用location匹配url中?号后的参数

nginx利用location匹配url中?号后的参数 http://www.baidu.com/index.php?a=1&b=2location能匹配到url,但是匹配不到url后面的参数,例如:?a=1&b=2 需求:访问地址:https://www.aposoft.com/all-apowersoft/?from=edm 开发要求可不可以只是这个完整地址https://www.aposoft.com/all-apowersoft/?from=edm 跳转到404,然后https:/