首先这不是重复的(据我所知)。
我真正想要的是允许用户拥有一个仅包含有效字符的用户名(配置文件名称),在我的例子中,是所有语言的字母以及空格。但同时防止数字、符号(如
!@#$%^&*()|\/?'";:=+-_.<>,~
)、其他不常见的符号(如 ©®♣♥♠♩¸¸♪·¯·♫
)、换行符、制表符和类似字符、表情符号以及每一个不常见的字符一个名字...
好吧,为了更清楚地说明,我想实现与 Facebook 完全相同的个人资料名称系统。
我正在使用 JS (Node),到目前为止我尝试了正则表达式,但我认为在该表达式中输入 unicode 中的每个有效字符范围是不明智的,是吗?当我将来需要编辑这些范围时,我什至不会尝试思考这会给我带来什么......
是否有任何库可以提供准确的方法?如果没有,我还有什么其他选择?
如有任何帮助,我们将不胜感激!
仅对于英语,您可以使用简单的字符类,例如
/^[a-zA-Z ]$/
或单词 char /^[\w ]$/
。有一个 Unicode 等效项:
/^[\p{L}\p{M}\p{Zs}]{2,30}$/u
说明:
\p{L}
- 表示任何语言中的字母字符\p{M}
- 表示标记(重音符号等)\p{Zs}
- 表示空格字符,例如常规空格
和日语空格字符
如果您想防止开头和结尾出现空格,请使用这些否定前瞻:
/^(?!\p{Zs})(?!.*\p{Zs}$)[\p{L}\p{M}\p{Zs}]{2,30}$/u
示例功能:
function validateName(name) {
return /^[\p{L}\p{M}\p{Zs}]{2,30}$/u.test(name);
}
请参阅演示:https://regex101.com/r/A4QDIf/1
请参阅有关 Unicode 正则表达式的文档:https://javascript.info/regexp-unicode
我写信是为了报告涉及我的帐户的欺诈交易 不幸的是,未经授权的资金已通过 RTGS 从我的账户转移到另一个人的账户 我恳请您紧急协助解决此问题,并采取必要措施防止进一步的未经授权的交易 我是尊贵客户 RTGS 银行 ke 电话号码 253000 我想通知您,请调查退款 请考虑采取行动,请确保我给予积极的回应