我正在建立两个正则表达式助手。
第一个用锚标记替换任何链接。这是它的外观:
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句柄(以@
开头),其中锚标记指向适当的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);
});
};
然后将这两个原型方法链接在一个字符串上,该字符串取代了匹配的匹配输入。我修复的前一个边缘案例涉及超链接中的@
符号。
我遇到的一个边缘案例,就是Twitter句柄位于字符串的开头(前面没有字符,没有空格等)。
如何让parseUsername
匹配任何@
没有任何字符的实例,例如斜杠/标记/连字符/等。在它前面,但是在字符串的第一个单词中的第一个实例?
这是一张正在发生的事情的图片:
答案 0 :(得分:2)
/(?:^|\s)[@]+[A-Za-z0-9-_]+/
^^
或start of string
。