【发布时间】:2012-07-06 11:07:45
【问题描述】:
在我们的注册表单中,我们现在想要要求用户输入他们的推特名称(例如@paul)。
谁能告诉它允许使用哪些字符?
例如a-z、A-Z、下划线、0-9
还有什么?
【问题讨论】:
在我们的注册表单中,我们现在想要要求用户输入他们的推特名称(例如@paul)。
谁能告诉它允许使用哪些字符?
例如a-z、A-Z、下划线、0-9
还有什么?
【问题讨论】:
我相信只有字母、数字和下划线,最多 15 个字符。
快速搜索发现这篇文章(非 Twitter)涉及相同的主题:
http://kagan.mactane.org/blog/2009/09/22/what-characters-are-allowed-in-twitter-usernames/
上面的帖子还包含帮助您验证的正则表达式示例:
Full regex – /^[a-zA-Z0-9_]{1,15}$/
Perl-compatible regex – /^\w{1,15}$/
【讨论】:
这是最终的 JavaScript 函数:
function validTwitteUser(sn) {
return /^[a-zA-Z0-9_]{1,15}$/.test(sn);
}
【讨论】:
在 Twitter 上查看此页面以获取官方指南/规则
http://support.twitter.com/articles/101299-why-can-t-i-register-certain-usernames#
【讨论】:
对于 JavaScript / TypeScript:
首先,
npm i twitter-text
# or
yarn add twitter-text
那么,
import { isValidUsername } from 'twitter-text'
console.log(isValidUsername('@helloworld')) // true
还有其他实现(Java、Ruby、ObjC),请看https://github.com/twitter/twitter-text
注意:捆绑包太大,仅用于字符串验证...
【讨论】:
虽然这里的正则表达式看起来都正确,但它们都允许少于 4 个字符通过验证。根据twitter:
因此,正确的正则表达式是:
/^[a-zA-Z0-9_]{4,15}$/
如果有人挑剔,那么你也不能使用 Twitter 或 Admin 这个词,就我的目的而言,以上就足够了。
【讨论】: