对另一个正则表达式URL匹配问题表示道歉,但我无法在任何其他线程中找到解决方案。
我想在字符串上运行replace()
方法,其模式匹配所有没有协议的网址(http,https等),但忽略了确实存在的网址。
所以给出了这个输入:
www.google.com www.facebook.com
http://www.google.com
http://www.facebook.com
它会在第一行匹配www.google.com
和www.facebook.com
(没有任何周围的空格),但忽略第二行和第三行的其他网址。
我想过只是寻找www
而忽略了//
作为前面字符的匹配,这让我想到了这个:
https://www.regex101.com/r/Y3rqxy/1
但是,正如您所看到的,第二个匹配包括前面的空格。由于我想将www
替换为http://www
,因此这个空白会让人感觉不安。
任何正则表达的官员都可以帮我解决这个问题吗?
答案 0 :(得分:0)
发布此消息后几秒钟,我的一位同事想出了一个解决方案。它有点古怪(感谢javascript)但它的确有效!此示例假定您要将http://
添加到任何缺少其协议的网址。
首先,您必须撤消您在.replace()
方法上运行{1}}方法的字符串:
string.split('').reverse().join('')
然后你可以使用以下正则表达式调用replace方法(注意向后http://www
!):
string.replace(/www(?!\/\/)/gi, 'www//:ptth')
然后你再次反转你的字符串:
string.split('').reverse().join('')
任何缺少该字符串中的协议的URL现在都会拥有它们。
它不会因清洁而获得任何奖项,但它确实有效!