【发布时间】:2017-04-17 21:39:37
【问题描述】:
对于我的网站,我正在为我的用户植入用户名。我正在查看 Snapchat 的用户名验证规则来指导我一些最佳实践,它们具有以下内容:
Must be 3-15 characters long
Can’t contain spaces
Must begin with a letter
Can only contain letters, numbers, and the special characters hyphen ( - ), underscore ( _ ), and period ( . ), EXCEPT that the username:
Can’t begin with a number, hyphen, underscore, or period
Can’t end with a hyphen, underscore, or period
Can’t contain emojis or other symbols such as @, $, #, etc.
Will appear only in lower-case letters within the app
这让我思考这如何适用于我遍布世界各地的用户。当Must begin with a letter 之类的要求如何使用正则表达式进行检查时,所有语言的所有字母都通过,但同时表情符号或“奇怪”字符等内容失败?
【问题讨论】:
-
您将从
\p{L}开始,然后从那里开始。这将用什么语言完成?顺便说一句,表情符号具有欺骗性。 -
实际上,要在 Unicode 中完成这一切,需要重写这些规则以包含更多/更少的字符。它似乎主要以 ascii 为中心(表情符号除外)。
-
编程语言?
-
@PedroLobito 我正在编写一个移动应用程序(Java/Swift)和一个 Nodejs 后端(Javascript)。前端和后端都在进行验证以确保用户名正确。
标签: javascript regex internationalization