JavaScript中的正则表达式负查找替换

JavaScript中的正则表达式负查找替换,javascript,regex,negative-lookbehind,Javascript,Regex,Negative Lookbehind,我有一个JS正则表达式,它带有一个否定的lookback断言,在基于Chromium的浏览器中运行良好: (?<!https?:)\/\/(.+?)(?<!https?:)\/\/gmi 正如@BaliBalo所说,我当前的正则表达式包含错误,并且工作不完美 我需要捕获https://stackoverflow.com/in//https://stackoverflow.com///如果您只想在替换中使用它们,可以尝试相反的方法。如果有你不想要的东西,也要抓住,如果是这样,就忽略

我有一个JS正则表达式,它带有一个否定的lookback断言,在基于Chromium的浏览器中运行良好:

(?<!https?:)\/\/(.+?)(?<!https?:)\/\/gmi

正如@BaliBalo所说,我当前的正则表达式包含错误,并且工作不完美
我需要捕获
https://stackoverflow.com/
in
//https://stackoverflow.com///

如果您只想在替换中使用它们,可以尝试相反的方法。如果有你不想要的东西,也要抓住,如果是这样,就忽略匹配。这在某些边缘情况下的行为略有不同,但在大多数情况下是可以接受的

例如,您的正则表达式可以是:

let result = input.replace(/(https?:)?\/\/((?:https?:\/\/|.)+?)\/\//g, (m, e1, val) => e1 ? m : '[match](' + val + ')');

第二行将捕获
https://stackoverflow.com
没有尾随斜杠,对吗?@BaliBalo否,有尾随斜杠(如示例中所示,需要捕获)@JohnDoe您当前带有lookbehinds的正则表达式没有:@sln这是可能的,因为我看到了示例,这很有效。但不幸的是,代码是错误的obfuscated@BaliBalo所以,我的正则表达式包含错误…感谢您的关注!