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

第一个用 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

09-09 21:23
查看更多