元字符
在正则表达式中能够帮助我们匹配的内容的符号都是正则表达式的元字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线 word
\s 匹配任意的空白符 tab键产生的空格 enter产生的空格 空格也能用空格进行匹配 tab键也可以用\t去匹配 enter键也可以用回车来进行匹配
\d 匹配一位数字 digit数字
\t 匹配tab键
\n 匹配回车键
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\W 非数字字母下划线
\S 只要不是空白符都能匹配到
\D 非数字
[] # ascii码进行的匹配,只能从小到大 不能从大到小 比如[7-0]就不行
[0-9] # 数字
[a-zA-Z]# 大小写
[\d\D] # 既能匹配数字字母下划线 又能匹配非数字字母下划线 标识所有 同理也知[\s\S][\w\W]
# 还有匹配所有的
. 表示匹配所有除换行符之外的所有
[^]非
[^\d] 非数字
# | 或
ab | abc 当要匹配的字符串为abc的时候,这种情况下 会匹配ab,而不会匹配abc,所以两个规则有重叠部分 把长的放在或的左边
() 约束或描述的内容的范围
量词
{n} 表示匹配n次
{n,} 表示匹配n次以上,至少n次
{n,m} 表示至少匹配n次,至多匹配m次
?表示匹配0次或1次
+ 表示1次或多次
* 表示0次或多次
整数 \d+
小数 \d+\.\d+
整数或小数 \d+\.?\d* 漏洞 12.这样也能匹配到
于是便分组来解决这个问题 \d+(\.\d+)?
手机号码 ^1[3-9]\d{9}$
贪婪匹配:
在匹配范围内,总是按照更多的方式进行匹配
.*x 表示匹配任意字符,任意多次数 遇到最后一个x才停止下来
惰性匹配(非贪婪)匹配:
元字符 量词 ?
元字符??x 非贪婪的匹配0次或1次 遇到第一个x就停止了
.*?x 表示匹配任意字符 任意多次数 一旦遇到x就停下来
转义符
原本有一些有特殊意义的字符,到了表达它本身的意义的时候,需要转移
有一些有特殊意义的内容,放在字符组中,会取消它的特殊意义
[.]
[(]
[.*+?] 在字符组中取消了意义,只匹配自身
[-] 放在两个值之间表示范围,放在两边表示 - 号如果在中间不希望其表示范围,那么用转义符
15位身份证 [1-9]\d{14}