正则表达式忽略URL

问题描述:

串尝试写reddits subreddits正则表达式。我的正则表达式将用链接替换subreddit名称,但我希望它忽略已经显示的url内的链接。例如,假设我有以下3个字符串。正则表达式忽略URL

https://www.reddit.com/r/starwars/comments/12345 

/r/starwars 

r/starwars 

我想写正则表达式匹配底部的2个字符串,但忽略顶部的一个。我试图使用正则表达式LookBehind,但一直未能得到它的工作。我现在正则表达式是:

(?<=[^m])\/?r\/([a-zA-Z_])+ 

我本来以为^ M将忽略任何字符串从“.com”之间

+1

[this regex](https://regex101.com/r/ph2Fog/1)? – TheLostMind

你不应该需要向后看或任何幻想开始与“M”为了这。相反,使用^和$(开始和结束字符串运算符)。尝试像这样的正则表达式:

var pattern = /^\/?r\/[A-Za-z_]+$/; 
pattern.test('https://www.reddit.com/r/starwars/comments/12345'); // false 
pattern.test('/r/starwars/comments/12345'); // false 
pattern.test('/r/starwars'); // true 
pattern.test('r/starwars'); // true 
+0

谢谢。我研究了你的例子,最后使用了以下代码: '/ \ /?r \/\ w +(?!\ S)/' – bertmaclin