正则表达式

Posted oymo

tags:

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

/^(?=.*[A-Za-z])(?=.*d)[A-Za-zd!@#$]{6,16}$/

表示长度为6-16位包含数字+字母,可以包含或不包含特殊符号的密码

.表示匹配除" "(换行符)和" "(回车符)之外的任何单个字符。

*表示匹配前面的子表达式任意次。例如,zo*能匹配"z",也能匹配“zo”以及“zoo”。*等价于{0,}。

()表示将(和)之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正在表达式中最多可以保存9个),它们可以用1和9的符号来引用。

(?=pattern)表示费获取匹配,正向肯定预查,在任何匹配pattern的字符串开始匹配查找字符串,该匹配不需要获取以后使用。例如,“window(?=95|98|XT|2000)”能匹配“window2000”中的“window”,但不能匹配“window3.1”中的“window”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是包含预查的字符之后开始。

W匹配任何非单词字符,等价于"[^A-Za-z0-9]"

第一个括号里面标识必须匹配到数字d

第二个括号表示必须匹配到字母

第三个中括号表示字符集合,匹配所包含的任意一个字符。例如,‘[A-Za-zd!@#$]’可以匹配“abc123!@#”中的"abc123@#"

三个条件由()括号取和集同时成立

代码、语法 说明
W 匹配任意不是字母、数字、下划线、汉字的字符
S 匹配任意不是空白符的字符
D 匹配任意非数字的字符
B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配aeiou这几个字母以外的任意字符
* 重复0次或更多次
+ 重复1次或更多次
重复0次或1次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?‘name‘exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?=exp) 匹配exp前面的位置
(?!exp) 匹配后面不是exp的位置
(?<!exp) 匹配前面不是exp的位置
(?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
*? 重复任意次,但尽可能少重复
+? 重复1次货更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
a 报警字符(打印它的效果是电脑嘀一声)
 通常是单词分界位置,但如果在字符类里使用代表退格
制表符,Tab
回车
v 竖向制表符
f 换页符
换行符
e Escape
nn ASCII代码中八进制代码为nn的字符
xnn ASCII代码中十六进制代码为nn的字符
unnnn Unicode代码中十六进制代码为nnnn的字符
cN ASCII控制字符。比如cC代表Ctrl+C
A 字符串开头(类似^,但不受处理多行选项的影响)
 字符串结尾或行尾(不受处理多行选项的影响)
z 字符串结尾(类似$,但不受处理多行选项的影响)
G 当前搜索的开头
p{name} Unicode中命名为name的字符类,例如p{IsGreek}
(?>exp) 贪婪子表达式
(?<x>-<y>exp) 平衡组
(?im-nsx:exp) 在子表达式exp中改变处理选项
(?im-nsx) 为表达式后面的部分改变处理选项
(?(exp)yes|no) 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no
(?(exp)yes) 同上,只是使用空表达式作为no
(?(name)yes|no) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
(?(name)yes) 同上,只是使用空表达式作为no

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

PHP 正则表达式总结

正则表达式

正则表达式

正则表达式“或“的使用

正则表达式 验证数字格式 非负数 小数点后保留两位 数字正则 double正则

JS正则表达式详解