验证用户名的正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证用户名的正则表达式相关的知识,希望对你有一定的参考价值。

参考技术A 1、不能有特殊字符和数字;

2、可以输入英文,可以有空格,可以输入英文名字中的点;

3、可以输入汉字;

4、中文英文不能同时出现;

5、长度在1-20;

用于验证用户名的正则表达式 [重复]

【中文标题】用于验证用户名的正则表达式 [重复]【英文标题】:Regex for validating username [duplicate] 【发布时间】:2021-02-26 01:00:23 【问题描述】:

我已经尝试了很多正则表达式模式,但我找不到一个完美的正则表达式,它可以执行以下操作(最少 3 个字符,最多 30 个字符,可以允许特殊字符,如果所有字符都只是特殊字符,它应该返回 false )。

期望:

    "ben":true,(满足 3 个字符) "ab":false,(不满足 3 个字符) "ben franklin":true,(可以留空格) "ben_franklin":true,(可以允许特殊字符) "ben@:true,(满足特殊字符和最少 3 个字符) "%#$":false,(虽然是 3char ,但都是特殊字符) “本#franklin”:真, "be'franklin":true "&%^$@#!*&^":false

【问题讨论】:

我想如果你连续有 10 个特殊字符也是假的? "&%^$@#!*&^":false? @xdhmoore 是的,应该是假的 是否需要你只用一个正则表达式来解决它?如果将任务拆分为两个正则表达式,问题就会变得容易得多。首先列入白名单(检查它是否只有您想要的字符和所需长度)并接受它们,然后将它们列入黑名单(检查字符串是否仅包含特殊字符)并拒绝那些 @SamridhTuladhar 这也是我要建议的。 【参考方案1】:

如果“特殊字符”是指任何非字母数字字符,则可以使用以下模式:

^(?=.*[A-Za-z0-9]).3,30$

Demo.

细分:

^                   # Beginning of the string.
(?=.*[A-Za-z0-9])   # Must contain at least one alphanumeric (English) character.
.3,30             # Match any character (special or not) between 3 and 30 times.
$                   # End of string.

进一步调整:

如果您想在“非特殊字符”中添加更多字符,您可以在字符类中添加它们。例如,要添加空格字符,您可以使用[A-Za-z0-9 ]

如果您想将“特殊字符”限制为一组特定的字符,则可以将.3,30 替换为[A-Za-z0-9@#$%....]3,30

【讨论】:

【参考方案2】:

我可能只需要 2 遍就可以做到这一点:

let str = "ben#franklin";
let result = !!(str.match(/^[a-z\s!@#$%^&_-]3,30$/g) && str.match(/^.*[a-z].*$/g));
console.log(result);
    检查有效字符。 确保至少有一个 a-z 字符。

你没有提到数字或大写字符,所以我没有添加它们。

【讨论】:

以上是关于验证用户名的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

求PHP用户名注册验证正则表达式(6-16位字符,字母开头,只包含字母数字下划线)可支持中文

如何在javascript中验证正则表达式?

【总结】js正则表达式及验证函数

前端表单验证常用的15个JS正则表达式

最常用的15个前端表单验证JS正则表达式

前端表单验证常用的15个JS正则表达式