验证Twitter网址的正则表达式

12

在这种情况下,也许不使用正则表达式会更容易? - DrStrangeLove
6个回答

14
你的意思是:
/http(?:s)?:\/\/(?:www\.)?twitter\.com\/([a-zA-Z0-9_]+)/

2
我在想:Twitter用户不能在他们的用户名中使用非 [a-zA-Z] 字母吗?这似乎对所有亚洲/俄罗斯/阿拉伯用户都不公平... - Thomas Hupkens
1
看起来现在是更新这个答案的时候了,Twitter于2012年5月29日停止使用#!URL(来源:https://blog.twitter.com/2012/improving-performance-on-twittercom)。这里有一个快速的正则表达式演示,展示了更新后的正则表达式工作情况:https://regex101.com/r/sH1hX1/1 - Jason Sperske
有两个回答得票相等。一个回答比较老但被标记为正确的答案。哪个答案更正确? - Aditya Anand
@JasonSperske,您的URL也接受https://wwwtwitter.com/SND_TST,这是不正确的。您需要在括号内加上\.www - Raheel Shahzad

14
/(?:http:\/\/)?(?:www\.)?twitter\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-]*)/

可选择使用https或添加www,例如:

http://twitter.com/example
https://twitter.com/example
http://www.twitter.com/example
https://www.twitter.com/example

有效


2
我不熟悉jQuery,但如果它使用标准的正则表达式,那么可能是这样的:
http://twitter.com/(#!/)?[a-zA-Z0-9_]{1,15}

这一段代码 (#!/)? 的作用是使 #!/ 变为可选项,而 [a-zA-Z0-9_]{1,15} 是因为 Twitter 用户名可以包含字母(大写或小写)、数字和下划线,并且长度最长为 15 个字符。


2

您应该考虑到httphttps以及www之间的差异。很多答案都忽略了这个规则。

'/^(?:https?:\/\/)?(?:www\.)?twitter\.com\/(#!\/)?[a-zA-Z0-9_]+$/i'

0

这样怎么样:

http:\/\/twitter\.com\/(#!\/)?\w+

0
url.match(/http:\/\/twitter.com\/(#!\/)?(\w*)/i);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接