本文主要是介绍JS 正则表达式 最全面中英文姓名校验 看这篇就够了 附加逐条解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.身份证上的真实姓名的校验要求:
逐条解析名字校验的正则
- [\u4e00-\u9fa5] 汉字
- /^ [\u4e00 - \u9fa5] | [a-zA-Z]$/ 输入汉字、字母
- /^ (? ![·\-_\s])(?!.* [·\-_\s]$) / 4个特殊符号“•”或“_” 或“-”或空格 不可以出现在开头和结尾
- /^[·\-\s\w\u4e00-\u9fa5]*$/ 汉字与符号的组合
- !/[0-9]/ 不可以出现数字
- !/[\u4e00-\u9fa5][a-zA-Z]{1}|[a-zA-Z][\u4e00-\u9fa5]{1}/ 汉字和字母不可以组合,即没有汉字与字母的组合
- !/[·_\-\s]{2}/ 符号“•”或“_”或“-”不允许挨着
- !/[\u4e00-\u9fa5]\s[\u4e00-\u9fa5a]/ 汉字之间不允许有空格
- !/[a-z]\s{2,}[a-z]/ 字母之间只允许有1个空格
常用正则特殊字符的含义:
字符 | 含义 |
^ | 匹配输入字符串开始的位置 |
$ | 匹配输入字符串结尾的位置 |
* | 匹配前一个表达式0次或者多次,等价于{0,} |
{n,} | n是正整数,匹配前一个至少出现了n次 |
[0-9] | 匹配0-9之间的数字 |
\d | 匹配一个数字,等价于[0-9] |
\D | 匹配一个非数字,等价于[^0-9] |
[a-zA-Z] | 匹配 a-z 之间的字母 |
\w | 匹配数字、字母、下划线,等价于[A-Za-z0-9_] |
\W | 匹配非数字、字母、下划线,等价于[^A-Za-z0-9] |
\s | 匹配一个空白字符 |
\b | 匹配一个单词边界,即单词和空格间的位置,例如匹配ing结尾单词 ing\b |
? | 匹配前面的子表达式0次或者1次 |
元字符:
元字符 | \d |
\w |
区间:
区间 | [0-9] |
[A-Z] |
限定符:
限定符 | * |
{n,} |
用“元字符+区间+限定符”编写一条正则:
?匹配7位数的QQ邮箱
[0-9]{7}@qq.com
普通字符的转义:
比如 “/” “.” “(” “)” 是正则里的特殊字符,那么在需要匹配的内容是这些正则里的特殊字符时需要用转义符 “\” 进行转义:
?匹配域名https://www.csdn.net
https:\/\/www\.csdn\.net
【tips】
正则中的特殊字符的含义可参考MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
推荐一个好用的在线正则工具:https://tool.lu/regex/(可生成各种语言的正则检测)
推荐一个亲测好用的 vscode 正则插件 “any-rule”,使用方法请参考原作者:https://juejin.im/post/5d245d4151882555300feb77
这篇关于JS 正则表达式 最全面中英文姓名校验 看这篇就够了 附加逐条解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!