匹配@作为第一个字符

时间:2015-07-04 04:27:52

标签: javascript regex

我正在建立两个正则表达式助手。

第一个用锚标记替换任何链接。这是它的外观:

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匹配任何@没有任何字符的实例,例如斜杠/标记/连字符/等。在它前面,但是在字符串的第一个单词中的第一个实例?

这是一张正在发生的事情的图片:

enter image description here

1 个答案:

答案 0 :(得分:2)

/(?:^|\s)[@]+[A-Za-z0-9-_]+/

   ^^

start of string