javascript - 如何检查链接中是否包含“/-s”?
问题描述
我使用以下正则表达式:\^(https?:\/\/)?(www.)?(m\.)?soundcloud\.com\/[^ "]+\/[^ "]+\/(s\-)[^ "]+\g
检查 soundcloud 链接是公共的还是私有的,但是它不起作用,因为我在过去 2 小时内一直在阅读正则表达式,但仍然没有弄清楚,私有和公共链接测试true
私人链接:https://soundcloud.com/user/album
- 应该匹配
私人链接:https://soundcloud.com/user/album/IX8PBwQLvX8
- 应该匹配
公共链接:https://soundcloud.com/user/album/s-IX8PBwQLvX8
- 应该匹配
唯一标识符是s-
最后一个/
,所以我希望它只有s-
在最后一个之后才检查 true/
我对这个正则表达式的推理,请在需要时纠正我。: 检查字符串是否以OR
^(https?:\/\/)?(www.)?(m\.)?
开头https://
OR : 检查域是否是, duhh : 检查下一个是否有任何数量的字符在它之后不是或。由于 /user 和 /album 路由,我使用了两次: Find the group after the lastwww.
m.
soundcloud\.com
soundcloud.com
\/[^ "]+
/
space/u200b
"
\/(s\-)
s-
/
解决方案
为了检查最后一个反斜杠之后是否是“s-”,您可以将其添加(?=.*\/s-)
到您的模式前面,使其变为:
(?=.*\/s-)^(https?:\/\/)?(www.)?(m\.)?soundcloud\.com\/[^ "]+\/[^ "]+\/(s\-)[^ "]+
此外,您应该在 www 之后转义到点,并且由于有效链接不能包含空格,因此您可以安全地删除模式的这一部分中的空格,[^ "]
并且当您重复这部分两次时,您可以删除第二部分并将其放入分组并使用 {2} 检查此模式重复两次:
(?=.*\/s-)^(https?:\/\/)?(www\.)?(m\.)?soundcloud\.com\/([^"]+\/){2}(s-)[^"]+
见正则表达式演示
推荐阅读
- python - 调用 cv2.putText() 时出现“未找到所需参数”错误
- node.js - 尝试获取集合时出现 Firebase 凭据错误
- c - How to ascertain that using the _IONBF macro with the setvbuf function, file operations are slow
- java - 如何安装 tomcat 在 intellij 中使用它。Ubuntu
- c# - XAMARIN ios pagina di login in C# [已解决]
- c# - 在 Visual Studio 2019 中使用 CLR 函数将 Hierarchyid 转换为字符串
- python - 为什么我的回溯算法不起作用并产生带有重复条目的正方形?
- python - Python中路径的字符串格式错误
- java - 同步:引起:org.codehaus.groovy.control.MultipleCompilationErrorsException:同步中的启动失败错误...... androidstudio 3.6.1
- r - 从R中值之间的字符串中提取数据框