UrlLinker在网址中不匹配%

时间:2014-02-02 20:16:46

标签: javascript php regex url

我正在使用UrlLinker https://bitbucket.org/kwi/urllinker/src来匹配我网站上的评论中的网址

自从我第一次使用它以来,它对我来说很好,但它对这个链接不起作用

http://example.com/files/213913702712nqh%297cwGb$_1D_e.jpg

此链接已匹配,直到%符号,其余部分保留为明文:

<a href="http://example.com/files/213913702712nqh">http://example.com/files/213913702712nqh</a>%297cwGb$_1D_e.jpg

如何修改REGEX以匹配%符号?因为该URL有效。

这是REGEX

{\b(https?://|ftp://)?(?:([^]\\\x00-\x20\"(),:-<>[\x7f-\xff]{1,64})(:[^]\\\x00-\x20\"(),:-<>[\x7f-\xff]{1,64})?@)?((?:[-a-zA-Z0-9]{1,63}\.)+[a-zA-Z][-a-zA-Z0-9]{1,62}|(?:[1-9][0-9]{0,2}\.|0\.){3}(?:[1-9][0-9]{0,2}|0))((:[0-9]{1,5})?(/[!$-/0-9:;=@_':;!a-zA-Z\x7f-\xff]*?)?(\?[!$-/0-9:;=@_':;!a-zA-Z\x7f-\xff]+?)?(#[!$-/0-9:;=@_':;!a-zA-Z\x7f-\xff]+?)?)(?=[)'?.!,;:]*([^-_$+.!*'(),;/?:@=&a-zA-Z0-9]|$))}{\b(https?://|ftp://)?(?:([^]\\\x00-\x20\"(),:-<>[\x7f-\xff]{1,64})(:[^]\\\x00-\x20\"(),:-<>[\x7f-\xff]{1,64})?@)?((?:[-a-zA-Z0-9]{1,63}\.)+[a-zA-Z][-a-zA-Z0-9]{1,62}|(?:[1-9][0-9]{0,2}\.|0\.){3}(?:[1-9][0-9]{0,2}|0))((:[0-9]{1,5})?(/[!$-/0-9:;=@_':;!a-zA-Z\x7f-\xff]*?)?(\?[!$-/0-9:;=@_':;!a-zA-Z\x7f-\xff]+?)?(#[!$-/0-9:;=@_':;!a-zA-Z\x7f-\xff]+?)?)(?=[)'?.!,;:]*([^-_$+.!*'(),;/?:@=&a-zA-Z0-9]|$))}

2 个答案:

答案 0 :(得分:0)

您必须将其添加到$rexpath的字符类:

$rexPath      = '(/[!$-/0-9:;%=@_\':;!a-zA-Z\x7f-\xff]*?)?';

答案 1 :(得分:0)

您必须将百分号添加到$rexNonUrl变量