我有这个字符串
[url=test.php]test[/url]
或
[url=http://test.php]text[/url]
我想要一个正则表达式得到这个
[url=http://test.php]text[/url]
示例:
之前:
str = "[url=test.php]text[/url]"
str.gsub(/\[url=(.*?)\](.*?)\[\/url\]/,'[url=http://\1]\2[/url]')
=> "[url=http://test.php]text[/url]"
问题:
str = "[url=http://test.php]text[/url]"
str.gsub(/\[url=(.*?)\](.*?)\[\/url\]/,'[url=http://\1]\2[/url]')
=> "[url=http://http://test.php]text[/url]"
所以..两个“http://”
任何想法?
感谢
答案 0 :(得分:0)
感谢您澄清问题。
如果链接的网址不是,那么您需要一个仅匹配[url]
BBCode标记的正则表达式。
http
应该有效:
\[url=\s*(?!http)([^\]]+)\](.*?)\[/url\]
说明:
str.gsub(/\[url=\s*(?!http)([^\]]+)\](.*?)\[\/url\]/,'[url=http://\1]\2[/url]')