• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 用于匹配带有小写和破折号的特定 URL 的正则表达式

[复制链接]
菜鸟教程小白 发表于 2022-12-13 16:11:31 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

每天早上,我都会访问这个名为 mtonews.com 的网站,并尝试使用 RegEx 构建一个 iOS 快捷方式来打开网站上的所有新闻链接。

网站有一堆链接:

https://mtonews.com/rihanna-teams-up-with-lvmh-for-fashion-brand    
https://mtonews.com/ciara-goes-naked-for-new-album-release

https://www.btserve.com/serve?t=bidt-sra&v=1&pubId=168&siteId=512&placementUid=5ae8e4105e-168%7C5&pgid=78ff2e45-8b3c-6a06-465f-2ac1a107f4f6&o=https://mtonews.com/&amp    
https://mtonews.com/.image/t_share/MTYzOTYyODY2ODAwNTM1Mzc3/steve_marjorie.png

我希望 RegEx 打开与前两个类似的所有链接。

这是我目前所拥有的:

^(?!image$|btserve$).*mtonews.com.*$



Best Answer-推荐答案


This tool可能会帮助您根据需要设计表达式。捕获组是正则表达式最简单的功能,您可以逐步将所需的输出与它们绑定(bind)。例如,

^((https?.*)(mtonews.com\/)([A-Za-z0-9-]+))$

有四个捕获组,一个用于协议(protocol),一个用于域,一个用于前导 URL,第一个将所有这三个组包装在其中,并且可以通过 $1 简单地调用。

enter image description here

正则表达式描述图

图表直观地显示了它的工作原理,您可能希望在 link 中测试其他表达式:

enter image description here

基本性能测试

此 JavaScript 片段返回一百万次 for 循环的运行时以提高性能。

const repeat = 1000000;
const start = Date.now();

for (var i = repeat; i >= 0; i--) {
	const string = 'https://mtonews.com/rihanna-teams-up-with-lvmh-for-fashion-brand';
	const regex = /^((https?.*)(mtonews.com\/)([A-Za-z0-9-]+))$/gm;
	var match = string.replace(regex, "\nGroup #1: $1\nGroup #2: $2 \nGroup #3: $3 \nGroup #4: $4 \n");
}

const end = Date.now() - start;
console.log("YAAAY! \"" + match + "\" is a match 
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap