我有一个RegEx,最初是这样的:
/https:\/\/medal.tv\/games\euro-truck-sim-2\/clips\/([A-z0-9-]+)(\/[A-z0-9]+)?(\??[A-z0-9]+\=?[A-z0-9]+-[A-z0-9]+)?/
这是完美的工作,但是,我希望它的工作都当它是“欧洲卡车SIM-2”和“进口剪辑”.我对RegEx没有太多的经验(实际上是零),我不知道我做错了什么。这就是我尝试过的,我不知道RegEx或其他东西是否与代码本身有关。
/https:\/\/medal.tv\/games\/(imported-clips|euro-truck-sim-2+)?\/clips\/([A-z0-9-]+)(\/[A-z0-9]+)?(\??[A-z0-9]+\=?[A-z0-9]+-[A-z0-9]+)?/
我看到的是,在导入剪辑匹配之后,在我的链接中没有其他内容:
https://medal.tv/clips/imported-clips
预期行为应为:
https://medal.tv/games/imported-clips/clips/remglmZK54/egmkr4t
或
https://medal.tv/games/euro-truck-sim-2/clips/remglmZK54/egmkr4t
换上
https://medal.tv/clips/remglmZK54
3条答案
按热度按时间w7t8yxp51#
这里有一个解决方案,用正则表达式匹配字符串的某些部分,并用
String.prototype.replace()
删除它们。指纹
说明:
1.使用lookbehind
(?<=)
和lookahead(?=)
分别匹配前缀字符串https://medal.tv/
和后缀字符串clips/remglmZK54
。这是因为我们希望锚字符串的中间部分,并在最终结果中仍然保留前缀和后缀。games/imported-clips/
或games/euro-truck-sim-2
的部分将被匹配并替换为空字符串''
,因此使用games\/(imported-clips|euro-truck-sim-2)\/
。( ... | ... )
表示逻辑OR
。1.我们还需要删除结尾的字母数字字符
egmkr4t
(不包括下划线_
)以及最后的/
,后者由\/[A-z0-9]+$
和全局修饰符g
处理。z31licg02#
找到解决方案:
重新考虑
A-z
,因为这不会产生您期望的结果。范围是代码点 * 0x 41 - 0x 7a *,包括 Z 和 a 之间的值。
我建议使用 “大小写不敏感” 模式
i
,并将范围调整为a-z
。此外,本发明还
.
0-9
替换为\d
=
iezvtpos3#
找到解决方案: