V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
songdg
V2EX  ›  程序员

有没有办法获取这段文字中的网址

  •  
  •   songdg · 2020-10-16 11:23:32 +08:00 · 1914 次点击
    这是一个创建于 1499 天前的主题,其中的信息可能已经有所发展或是发生改变。
    尤力优运动用品有限公司订单商品网址: https://trade.1688.com/order/offer_snapshot.htm?spm=a360q.8274423.0.0.49c84c9a1vn15M&buyer_id=2209255322256&order_entry_id=1280302311779325622 经营的阿里巴巴网站广告宣传该产品是“100%”该宣传疑似虚假广告。
    11 条回复    2020-10-18 00:19:39 +08:00
    zhongjun96
        1
    zhongjun96  
       2020-10-16 12:05:24 +08:00   ❤️ 1
    匹配 http 开头坐标,然后下一个空格截断就行了
    BoarBoar
        2
    BoarBoar  
       2020-10-16 12:54:59 +08:00   ❤️ 1
    就是楼上说的,如果没空格也可以用 asc 值判断汉字,你这萌新得太过了点把。。
    gablic
        3
    gablic  
       2020-10-16 13:06:51 +08:00
    @BoarBoar 我猜他想问的是用什么软件
    imdong
        4
    imdong  
       2020-10-16 13:16:47 +08:00   ❤️ 1
    正则表达式,任何语言下都有解决方案,简易实现如下:

    https?:\/\/[a-zA-Z0-9\.-]+(\/[\w\/\.\?=&%]+)?

    https://regex101.com/r/rDylae/1

    已知问题,网址中如果有意料之外的特殊符号,则无法匹配,需要完善符号库。

    https 如果过大小写掺杂,要么用忽略大小写匹配,要么就用这个方法 [hH][tT]{2}[pP][sS]?:\/\/ 开头

    通用不考虑误匹配,一楼方案亦可:

    [hH][tT]{2}[pP][sS]?:\/\/[a-zA-Z0-9\.-]+([^\s]+)?

    https://regex101.com/r/rDylae/2

    但是依然会有其他问题,比如无空格但是汉字不属于其中的,自己取舍,汉字算不算在内,不算的话,就把汉字也排除,具体方法自己搜索一下把。
    flynaj
        5
    flynaj  
       2020-10-16 13:21:38 +08:00
    这个 V2EX 不是匹配出来了么,你看看他的代码不就明白了么
    jackrebel
        6
    jackrebel  
       2020-10-16 16:06:00 +08:00
    使用正则解决, 楼上的就可以,
    我的增强版:( http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?


    js 代码:

    var pattern = "/( http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?/g";

    str = '尤力优运动用品有限公司订单商品网址: https://trade.1688.com/order/offer_snapshot.htm?spm=a360q.8274423.0.0.49c84c9a1vn15M&buyer_id=2209255322256&order_entry_id=1280302311779325622 经营的阿里巴巴网站广告宣传该产品是“100%”该宣传疑似虚假广告。';

    console.log(pattern.test(str));



    可使用 https://www.8kmm.com/sites/3663.html 这个工具进行测试和生成代码。
    songdg
        7
    songdg  
    OP
       2020-10-17 18:30:43 +08:00
    @zhongjun96 谢谢,我也是这样想,只是想问下有没有更先进的方法。
    songdg
        8
    songdg  
    OP
       2020-10-17 18:32:54 +08:00
    @imdong 确实是没有通用、一招搞掂的方法。
    songdg
        9
    songdg  
    OP
       2020-10-17 18:37:12 +08:00
    @flynaj 请教一下如何看 V2EX 的代码?
    songdg
        10
    songdg  
    OP
       2020-10-17 18:43:50 +08:00
    @jackrebel 谢谢,不过 ahk 就没有如此丰富的内置函数。
    OldActorsSmile
        11
    OldActorsSmile  
       2020-10-18 00:19:39 +08:00
    我前几天开发抖音去水印小程序也有这个需求,也是用正则解决的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2801 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:10 · PVG 21:10 · LAX 05:10 · JFK 08:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.