twitter用户名的正则表达式

ppp*_*ppp 25 javascript regex

我需要一个javascript正则表达式来匹配twitter用户名.

用户在注册时输入用户名,因此我不想用太多的错误通知来分散他们的注意力.因此,如果他们在用户名之前有@,我需要表达式匹配有效的用户名.

Twitter用户名可以包含拉丁字符,下划线和数字,唯一的限制是最多可以包含15个字符.(但我需要正则表达式匹配16个字符,以防有人在用户名之前输入@).

ase*_*ovm 39

这应该做: ^@?(\w){1,15}$

  • 即使它只能找到OP,但只想对那些不了解"正则表达式"的人做一般评论.只有当被检查的用户名是给定文本行或字符串中存在的唯一字符集时,此测试才会匹配,具体取决于"正则表达式"引擎的版本,这就是为什么它包含在^和$之间,但是这个测试如果在同一行或字符串中存在任何其他字符(包括空格字符),则会失败...只是想说明这一事实,所以有人不会尝试将此用于全文搜索之类的内容.:) (7认同)

ray*_*nco 35

这是我发现的最好的解决方案,可以替换多次出现的twitter用户名.

这个技巧的正则表达式是/(^|[^@\w])@(\w{1,15})\b/.我正在捕捉@字符背后的内容,以便我可以正确替换用户名.我正在使用全局匹配标志(g),因此它将替换所有出现的事件. asenovm答案很简单,但在大多数用户输入上下文中都不起作用,正如techexpert他的评论中所解释的那样.

var output,
    text    = "@RayFranco is answering to @AnPel, this is a real '@username83' but this is an@email.com, and this is a @probablyfaketwitterusername",
    regex   = /(^|[^@\w])@(\w{1,15})\b/g,
    replace = '$1<a href="http://twitter.com/$2">@$2</a>';

output = text.replace( regex, replace );

console.log ( output );
Run Code Online (Sandbox Code Playgroud)

这给了我预期的结果(使用节点v0.9.1测试):

@RayFranco正在回答@AnPel,这是一个真正的' @ username83 ' ,但这是一个@ email.com,这是一个@probablyfaketwitterusername

这是基于用户名的Twitter"specs":

您的用户名不能超过15个字符.您的真实姓名可以更长(20个字符),但为了方便起见,用户名会更短.如上所述,用户名只能包含字母数字字符(字母AZ,数字0-9),但下划线除外.检查以确保所需的用户名不包含任何符号,短划线或空格.

希望这可以帮助.


Rod*_*olo 6

一个简短的简单方法:

function validTwitteUser(sn) {
    return /^[a-zA-Z0-9_]{1,15}$/.test(sn);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

@[a-zA-Z0-9_]{0,15}

您可以使用上面的正则表达式从一组混合数据中对 Twitter 用户名进行排序