例如知乎编辑器内,如果粘贴了一段网址,会自动转换为链接。
stack 上找到的代码不知道该如何用,大家可以看看。
function replaceURLWithHTMLLinks(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"<a href='$1'>$1</a>");
}
是监视 keyup 来替换的吗?希望得到大家的解答!谢谢!
*** // Update:2013-12-09 :***
编辑器为 <div contenteditable="true"></div>
不推荐用
keyup
事件,因为它对非键盘操作的动作没反应,比如鼠标粘贴进来一个网址。这时候需要用onPropertyChange
事件,能够对textarea
内的属性值的变化产生动作。另外,正则部分推荐最后加一个空格判定,也就是
URL+空格
才解析为链接形式,如果是之前的匹配的话会造成死循环。http://jsfiddle.net/5kmqe/1/