此正则表达式([a-zA-Z0-9]?(?:http[s]?://)?(?:(?:\w+)\.)(?:\S+)(?:\.(?:\w+))+?)
成功找到字符串中http://www.msn.com
或www.msn.com
或msdn.microsoft.com
或http://msdn.microsoft.com
的任何内容。但是,我需要使用两种替换算法,一种是<a href=\"$1\" target=\"_blank\" onclick=\"preventDualEditing(event)\">$1</a>
,另一种是<a href=\"http://$1\" target=\"_blank\" onclick=\"preventDualEditing(event)\">$1</a>
。 请注意,区别在于字符串前缀为http://
,这对于www.msn.com
等链接是必需的。
但是,正在发生的事情是我使用替换语句的循环是搞乱的,因为如果它试图替换www.msn.com
,则发现的第一次出现是http://www.msn.com
,因此它会多次替换它 - 一旦找到http://
的链接,一次找到www.msn.com
的链接。
我有没有办法让一次性替换有条件地在必要时将http://
添加到字符串中?
答案 0 :(得分:4)
试试这个:
([a-zA-Z0-9]?http[s]?://)?((?:(?:\w+)\.)(?:\S+)(?:\.(?:\w+))+?)
并使用$2
代替$1