文章目录


概念

正则表达式最初是科学家对人类神经系统的工作原理进行研究,目前在编程语言中得到广泛运用

正则表达式通常被用来检索、替换、选取那些符合某个模式(规则)的文本

正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、以及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。

作用

匹配

判断给定的字符串是否符合正则表达式的过滤逻辑

提取

可以通过正则表达式,从字符串中获取需要的特定部分

替换

正则有很强大的字符串替换能力

特点


  1. 灵活性、逻辑性和功能性非常强
  2. 运用广。比如:爬虫
  3. 对于刚接触的人来说,比较绕、晦涩、难懂

组成

普通字符

‘huan’、‘kai’、‘123’

元字符

正则表达式中有特殊意义的字符


  1. \d 匹配数字
  2. \w 匹配字母或数字或下划线

元字符


  1. 在线测试:​​正则表达式在线测试​
  2. 常用元字符

元字符

描述

\d

匹配一个数字字符。等价于[0-9]

\D

匹配一个非数字字符。等价于[^0-9]

\w

匹配包括下划线的任何单词字符。等价于"[A-Za-z0-9]"

\W

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

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]

\S

匹配任何非空白字符。[^\f\n\r\t\v]

.

匹配除"\n"之外的任何单个字符。要匹配包括"\n"在内的任何字符,使用像"(.︱\n)"的模式

^

匹配输入字符串的开始位置.如果设置了RegExp对象的Multiline属性,^也匹配"\n"或"\r"之后的位置

$

匹配输入字符串的结束位置.如果设置了RegExp对象的Multiline属性,^也匹配"\n"或"\r"之前的位置

  1. 限定符

限定符

描述

*

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

+

匹配前面的子表达式一次或多次。例如,“zo+“能匹配"zo"以及"zoo”,但不能匹配"z”。+等价于{1,}

?

匹配前面的子表达式零次或一次。例如,"do(es)?“可以匹配"does"或者"does"中的"do”。?等价于{0,1}

{n}

n是一个非负整数。匹配确定的n次。例如,"o{2}"不能匹配"Bob"中的“o”,但是能匹配“food”中的两个o

{n,}

n是一个非负整数。至少匹配n次。例如,"o{2}"不能匹配"Bob"中的“o”,但是能匹配“foooooood”中的所有o。"o{1}“等价于"o+”。"o{0,}"等价于o{*}

{n,m}

匹配任何非空白字符。等价于[^\f\n\r\t\v]

  1. 其他

其他

描述

[xyz]

字符合集。匹配所有包含的任意一个字符。例如:[abc]可以匹配plain中的a

[^xyz]

负值字符合集。匹配未包含的任意一个字符。例如:[^abc]可以匹配plain中的p

[a-z]

字符范围。匹配指定范围内的任意字符。例如,[a-z]可以匹配任何在a到z范围内的任意字符

[^a-z]

负值字符范围。匹配任何不在指定范围内的任意字符。例如,[^a-z]可以匹配任何不在a到z范围内的任意小写字母字符

()

从两个直接两种选择一个分组。例如,gr(a|e)y匹配gray或者grey

常用案例


  1. 用户名:^[a-z0-9_-]{3,16}$
  2. 密码:^[a-z0-9_-]{6,18}$
  3. 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  4. 邮编:^[1-9]\d{5}$
  5. 验证日期:^\d{4}-\d{1,2}-\d{1,2}
  6. 验证邮箱:^\w+@\w+.\w+&