用正则表达式匹配url网址

《VN线波段系统》已上线唯奥学院,该系统首次在线上分享,适用于波段方向与体系研究。已预订用户可随时观看。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<div class="b_cont">
    <p>
        最新录制的<a href='' target='_blank'>《VN线波段系统》</a>已经制作完毕上传<a href='' target='_blank'>唯奥学院</a>了,这套系统我做出来有5年多了,这还是首次在网络上授课,一个波段的方向和体系,其实都代表着内在的核心,已经预订的同学可以观看,订阅完毕之后没有时间限制,没有次数限制,观看地址:
    </p>
</div>
<script src="js/jquery-1.8.3.min.js"></script>
<script>
    $(document).ready(function(){
        $(".b_cont").find("p").each(function(){
            var con = $(this).html();
//            去掉无用的空格
            con = con.replace(/ /ig, "");
            $(this).attr("style","  'line-height': '2!important', 'font-size': '18px!important', 'color': '#000000!important', 'font-family': 'Microsoft Yahei,'微软雅黑',sans-serif!important");
//            判断是否是公司的网址 不是不进行添加a
            if(con.indexOf("想要匹配的网址")>=0)
            {

                if(con.indexOf("html")>=0){
                    var hre ;
//                    匹配url的正则网址
                    var  reg = /((ht|f)tps?:)\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g;
//                    配出正确的url
                    hre = con.match(reg);
//                    把正确的url替换成“”
                    con =con.replace(reg,"");
                    if($(this).find("a").attr('href')==hre[0]){
                        if($(this).find("a").html().indexOf("http://www.wevall.com")>=0){
                        }else{
//                添加a标签
                            var val="<a>"+hre[0]+"</a>";
                            $(this).html(con+val)
                            $(this).find("a").attr('href',hre[0]);
                        }
                    }else{
                        var val="<a>"+hre[0]+"</a>";
                        $(this).html(con+val)
                        $(this).find("a").attr('href',hre[0]);
                    }

                }else{
                    var hre1;
                    var reg1 = /http:.+?com/;
                    hre1 = con.match(reg1);
                    con  = con.replace(reg1,"");
                    if($(this).find("a").attr('href')==hre1[0]){
                        if($(this).find("a").html().indexOf("http://www.wevall.com")>=0){

                        }else{
                            var val1="<a>"+hre1[0]+"</a>";
                            $(this).html(con+val1)
                            $(this).find("a").attr('href',hre1[0]);
                        }
                    }else{
                        var val1="<a>"+hre1[0]+"</a>";
                        $(this).html(con+val1)
                        $(this).find("a").attr('href',hre1[0]);
                    }

                }
            }
           
        });

    })

网上流传着多种匹配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\-\.\?\,\'\/\\\+&amp;%\$#_]*)?

带参数的匹配有问题。

image

百度知道中有人回答的

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

有严重的汉字问题。

image

 

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

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

image

转载地址:https://www.cnblogs.com/speeding/p/5097790.html


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值