1
zhongjun96 2020-10-16 12:05:24 +08:00 1
匹配 http 开头坐标,然后下一个空格截断就行了
|
2
BoarBoar 2020-10-16 12:54:59 +08:00 1
就是楼上说的,如果没空格也可以用 asc 值判断汉字,你这萌新得太过了点把。。
|
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 但是依然会有其他问题,比如无空格但是汉字不属于其中的,自己取舍,汉字算不算在内,不算的话,就把汉字也排除,具体方法自己搜索一下把。 |
5
flynaj 2020-10-16 13:21:38 +08:00
这个 V2EX 不是匹配出来了么,你看看他的代码不就明白了么
|
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 这个工具进行测试和生成代码。 |
7
songdg OP @zhongjun96 谢谢,我也是这样想,只是想问下有没有更先进的方法。
|
11
OldActorsSmile 2020-10-18 00:19:39 +08:00
我前几天开发抖音去水印小程序也有这个需求,也是用正则解决的
|