我正在建立两个正则表达式助手。
第一个用 anchor 标记替换所有链接。外观如下:
String.prototype.parseURL = function() {
return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&~\?\/.=@]+/g, function(url) {
return url.link(url);
});
};
第二个替换用指向适当的Twitter个人资料的 anchor 标记替换所有Twitter句柄(以
@
开头)。当前的外观如下:String.prototype.parseUsername = function() {
return this.replace(/\s[@]+[A-Za-z0-9-_]+/g, function(u) {
var username = u.replace("@","")
return u.link("http://twitter.com/"+username);
});
};
然后,将这两种原型(prototype)方法都链接在一个字符串上,该字符串将替换适当匹配的输入。我修复的前一个边缘案例涉及超链接中的
@
符号。我没有遇到一个极端的情况,那就是Twitter句柄位于字符串的开头(前面没有字符,没有空格等)。
如何让
parseUsername
与没有任何字符(例如,斜杠/标签/连字符/等)的@
的所有实例匹配。在它的前面,但是字符串的第一个单词中的第一个实例吗?这是发生的情况的图像:
最佳答案
/(?:^|\s)[@]+[A-Za-z0-9-_]+/
^^
或者使用
start of string
。