2013-03-22 48 views
0

我有这样的模式来做的网址点击,现在在我的文字有<br /><BR />,如果一个链接后面是BR,该模式包括在链接<br /><BR />,怎么能我排除他们在这个模式:,如何排除BRS图案

replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 

这是一个使用模式的代码:

replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>'); 
+0

你不显示使用该模式的代码,但我试用了我自己的一些简单代码,并没有任何br元素的问题:http://jsfiddle.net/mdm8r/(for我 - 在Chrome中测试 - br元素在链接后结束,即在我的JS添加的关闭''后。鉴于你的模式不应该匹配'<'我看不到它可能包括一个尾随br元素... – nnnnnn 2013-03-22 10:37:41

+0

我都没有:[http://regexr.com?34851](http://regexr。 com?34851) – sp00m 2013-03-22 10:40:25

+0

仍然没有:[http://regexr.com?34854](http://regexr.com?34854)。你能否提供一个[jsfiddle](http://jsfiddle.net/)来举例说明你的问题? – sp00m 2013-03-22 10:42:38

回答

0

正则表达式模式

(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])(?:<[bB][rR]\s?\/?>)* 

更换模式

<a href="$1" target="_blank">$1</a> 

输入

http://www.stackoverflow.com<br> 
http://www.stackoverflow.com<br/> 
http://www.stackoverflow.com<br /> 
http://www.stackoverflow.com<BR> 
http://www.stackoverflow.com 
http://www.stackoverflow.com<BR/> 
http://www.stackoverflow.com<BR /> 

这里有一个链接:http://regexr.com?3485d

正则表达式将检查是否有(可选)BR-标签。如果没有,它只会匹配正常的网址。

+0

我以为OP想忽略*
' – 2013-03-22 10:58:18

+0

检查链接中的结果,它会被忽略的结果 – 2013-03-22 10:59:08

+0

不,我认为OP想“排除它们在模式中”,但我认为你是对的。我想可能OP想要*包括*然后在模式中,以便从替换中删除它们。 – 2013-03-22 11:04:31