如何进行替换,将段落中的所有普通地址转换为链接?
问题是句点在地址中有效,但地址可能在句子的末尾。
测试字符串:
The link is: http://www.google.com/pants. And that is the link.
我需要从http分组到裤子。 (这是纯文本,我需要将其设为html。)
这个正则表达式抓住裤子之后的时期,所以很糟糕:
(^|[\n ])([\w]+?://[^\s]*)
我很确定我需要做一个前瞻,但我不能把它放在^ \ s字符集中。试图做一个ifthenelse也没有我。
这是我的输出内容:
$1<a href=\"$2\" target=\"_blank\">$2</a>
答案 0 :(得分:1)
假设网址中没有空格,后面跟着字符串的空格或结尾:
str = str.replace(
/(https?:\/\/\S+?)(?=\.?(\s|$))/g,
'<a href="$1" target="_blank">$1</a>' );
它会尽可能少地捕获'http [s]://'和非空格字符,直到向前看可选.
,然后是空格或字符串结尾。
如果您要排除可能位于网址末尾的其他标点符号,您可以相应地更改正面预测,例如(?=[;:!,.]?(?:\s|$))
。
请注意,上述正则表达式并非仅与有效网址匹配,您可能希望将\S
替换为[\w/.-]
,以仅匹配包含字词字符的网址和.-/
。
答案 1 :(得分:0)
这些用于网址正则表达式模式的模式:
^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$
^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$
你可以像这样使用它们
str = str.replace(PATTERN/g,
'<a href="$1" target="_blank">$1</a>' );
找到大量的