正则表达式都不会写,也敢说自己是高级工程师?
据我了解,很多做客户端开发的都不太会正则表达式。写个文章扫扫盲,也因为用的不是很多,所以也比较容易忘记。写个文章记录一下,后续要用,方便查找。
![](https://img.haomeiwen.com/i4163152/5c02a9221547f677.gif)
1.正则表达式模式描述
它是由基本操作和作为操作的字符组成。
2.连接操作
当我们写出AB时,就指定了一种语言{AB},它通常由两个字符组成的字符串,由A和B连接而成。
3.或操作
第二种操作是多种可能的匹配。用“|”这符号表示。例如,A|B指定语言是{A,B},A|E|I|O|U指定语言是{A,E,I,O,U}。连接符的优先级高于或操作,因此AB|BCD指定语言是{AB,BCD}
4.闭包操作
第三种操作是部分重复任意次数。将模式和自身连接任意多次(包括0次),我们将标记在需要被重复的模式之后,以表示闭包。闭包操作的优先级高于连接操作。例如,AB指定语言有0个或者多个A和一个B的字符串组成。AB指定语言是一个A和0个B或者多个B的字符串组成。
5.括号
使用括号是用来改变默认的优先级别顺序的。例如,C(AC|B)D指定语言是{CACD,CBD}.(AB)指定语言是0个或者多个AB。
以上是基本写法,由于为了简便性和扩展性,还有一些缩略写法。
6.字符集描述符
“.”是一个可以表示任意字符的通配符。例如A.B。
[ ]表示包含在[ ]中的字符,[AEIOU]。
"-"表示范围,例如[A-Z][0-9]
"^"表示任意不在[ ]内的字符,[^AEIOU]
7.闭包的简写
+表示至少重复一次,例如,(AB)+ 相当于(AB)(AB)*
?重复0次或者1次,例如(AB)? 空或者AB
{N}指定重复次数,(AB){3} 相当于(AB)(AB)(AB)
{N-M}指定重复次数范围 (AB){1-2} 相当于(AB)|(AB)(AB)
8.转移序列
某些字符,例如""、 "."、 "|"、 "*" 、"(" 、 ")",这些都是用来构造正则表达式的元字符。我们使用反斜杠开头来转移这些字符。例如,''\\"表示的就是"\"
![](https://img.haomeiwen.com/i4163152/ad3aafa5db775cf3.jpeg)