如何检测某个字符串不是电子邮件地址而是推特ID?

时间:2011-05-25 10:10:30

标签: regex

有没有办法区分电子邮件地址和推特ID? 两者都使用'@'字符,电子邮件正则表达式将包含在twitter id正则表达式中 最好的方法是什么?
我应该在'@'字符前要求一个空格,以便确定它是推特ID吗?

4 个答案:

答案 0 :(得分:4)

不完全确定Twitter用户名中允许哪些字符,但基本上如此:

/(?:^|\s)@[a-zA-Z0-9_.-]+\b/

答案 1 :(得分:3)

您可以使用(?<=\s)测试它前面是空格,然后检查仅[A-Za-z0-9_]的推文ID的有效字符。

这会产生以下正则表达式:(?<=\s|^)@[A-Za-z0-9_]+

你最终可以在它之后添加一个点,逗号或空格的检查,以检查它是否在一个句子中正确格式化而不是一些奇怪的工件:

(?<=\s|^)@[A-Za-z0-9_]+(?=[\s.,])

请注意,lookbehind和lookahead(?<=?=)可能无法使用您选择的语言,但我会假设它没有指定。

答案 2 :(得分:1)

推特ID不会通过电子邮件正则表达式检查。

定期发送电子邮件:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

twitter不会有最后的字符:

^@[A-Za-z0-9_]+$

因此请检查它是否是有效的电子邮件,如果没有,请检查它是否是有效的推特ID

进一步阅读:

How to Find or Validate an Email Address

答案 3 :(得分:1)

电子邮件地址从不以@开头,而twitter ids 始终

isTwitter = address[0] == '@'