正则表达式是一个帮助处理和匹配复杂字符串的工具,regular expression(RegEx)
集合set是一对方括号[]内的一组字符,用来代表整个字符中的任意一个 例如:
[abc]
指定字符(a,b或c)之一[a-z]
表示任何一个小写字母[^abc]
^ 表示否的意思,表达了除a,b,c外的任意字符[0246]
代表 0,2,4,6的任意一个[0-9]
代表 0到9的任意一个数字[a-zA-Z]
任何一个大小写字母[+]
在集合中 +、*、|、()、$、{}都没有特殊含义,仅代表普通字符匹配[0-9]+
这里的加代表连续多个
通配符是一种特殊字符,一般指的是反斜杠\后面紧跟的一些特殊标识符,用来指代某些字符集合
\d
代表阿拉伯数字(只能匹配一个字符)\D
代表除了阿拉伯数字外的所有字符,可以理解为[^\d]\s
空白字符\S
除空白字符外的所有字符\w
任何单词字符(字母、数字、汉字、下划线_字符)\W
返回一个匹配项,其中字符串不包含任何单词字符 不常用:\A
字符串的开头\Z
字符串的末尾\b
返回指定字符位于单词的开头或者末尾的匹配项\B
不在单词的开头和结尾处在正则表达式中具有特殊含义的字符,具有很高的优先级。例如[]
、\
、+
都是元字符 在元字符中\
的优先级最高,其次为各种括号
\
代表对随后的通配符进行转义,因此需要用\\
表示\
本身若反斜杠后面没有通配符,则反斜杠原样输出,就不再转义
[]
用于限定字符集合注意:使用
[]
时,再[]中间的特殊字符如.+?*:-等等都是看作普通字符,但若要将\[]看作普通字符,需要进行转义,即使用\\表示\,使用\[来表示[
[\w,]+
//代表检索所有连续的单词字符或者连续的, 在[]中只能匹配一个字符
.
英文的小数点,表示除换行符之外的任何一个字符
*
代表前面的字符可以出现0次或多次
+
代表一个或多个连续匹配的字符
?
非贪婪模式,表示匹配前面的字符0次或一次
+?
将搜索模式从贪婪模式改为非贪婪模式
如果能匹配到,则匹配一个,不会匹配多个
{}
表示的是前面表达式的确切的出现次数
\d{2} 表示 匹配两个数字 \d{2,4} 表示 匹配2-4个数字,2,3,4个 \d{2,} 表示2位到无限位
|
管道符 代表选择其中一个,一般按顺序选择,若前面的已被匹配,就不会匹配后面的
()
捕获和分组
括号内的字符串将会作为捕获的结果进行输出,只会输出括号内的匹配字符串
^
代表字符串的开始
代表字符串的结束
?:
表示非捕获分组,匹配冒号后的内容抄但不获取匹配结果,不进行存储供以后使用。
let str = "abcc123dd1hg";
const regex = /(\d+)([a-zA-Z]+)/g
regex.exec(str);
console.log(`${RegExp.$1}----${RegExp.$2}---${RegExp.$0}`); //获取捕获组中捕获的内容
//123----dd---undefined
使用正则表达式来进行密码强度验证,一般密码由数字、字母和特殊字符组成,若由一连串的数字或字母或特殊字符,这种密码的安全性不高,而由其中两种组成密码强度一般,用户密码包含的字符种类越多,密码的安全性越高
\d{6,}
[a-zA-Z]{6,}
[.-+?\\\[\]`/;‘@#$%^&*():<>=~]{6,}
注意:在集合中写[]和\时需要进行转义,因为这两个时元字符,优先级较[]来说更高
解释:
? [\da-zA-Z]* 表示匹配空字符串,或长度至少为1的由数字和字母组成的字符串 ? \d+[a-zA-Z]+ 表示1个或多个连续数字和1个或多个连续字母组成的字符串 ? 连起来就可以匹配一系列数字和字母组成的字符串
[\da-zA-Z]*\d+[a-zA-Z]+[\da-zA-Z]*
[\d.-+?\\\[\]`/;‘@#$%^&*():<>=~]*\d+[.-+?\\\[\]`/;‘@#$%^&*():<>=~]+[\d.-+?\\\[\]`/;‘@#$%^&*():<>=~]*
[\da-zA-Z.-+?\\\[\]`/;‘@#$%^&*():<>=~]* #0个或多个数字、字母和特殊字符的混合字符串
((\d+[a-zA-Z]+[.-+?\\\[\]`/;‘@#$%^&*():<>=~]+)| #数字开头
(\d+[.-+?\\\[\]`/;‘@#$%^&*():<>=~]+[a-zA-Z]+)| #数字开头
([a-zA-Z]+\d+[.-+?\\\[\]`/;‘@#$%^&*():<>=~]+)| #字母开头
([a-zA-Z]+[.-+?\\\[\]`/;‘@#$%^&*():<>=~]+\d+)| #字母开头
([.-+?\\\[\]`/;‘@#$%^&*():<>=~]+\d+[a-zA-Z]+)| #特殊字符开头
([.-+?\\\[\]`/;‘@#$%^&*():<>=~]+[a-zA-Z]+\d+)| #特殊字符开头
)[\da-zA-Z.-+?\\\[\]`/;‘@#$%^&*():<>=~]*
一般邮箱在@前面会是数字和字母的混合,在其中间可能会混有_
、-
、.
、+
,在@后面可能会带有字母和数字然后.加上顶级域名或者会有两个域名
^[\da-zA-Z.-_+]+@[\da-zA-Z_.-+]+[.][\da-zA-Z]{2,4}$
注意:想表示字符.时一定要加上[.],因为普通的.代表的是任意字符,而[.]代表的是字符.
身份证号由六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码组成
[1-9]\d{5}
(18|19|20)\d{2}
([1-2][0-9])|(0[1-9])|(3[0-1])
\d{3}
[\dXx]
^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([1-2][0-9])|(0[1-9])|(3[0-1]))\d{3}[\dXx]$
reg = /^\s+|\s+$/g;
原文:https://www.cnblogs.com/ruran/p/15027601.html