在我们的注册表单中,我们现在想要求用户输入他们的推特名称(例如@paul)。
谁能告诉它允许使用哪些字符?
例如 az、AZ、下划线、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-ti-register-certain-usernames#
虽然这里的正则表达式看起来都是正确的,但它们都允许少于 4 个字符通过验证。根据推特:
因此,正确的正则表达式是:
/^[a-zA-Z0-9_]{4,15}$/
如果要挑剔,那么您也不能使用 Twitter 或 Admin 这个词,就我的目的而言,以上就足够了。
对于 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
注意:捆绑包太大,仅用于字符串验证...