正则表达式

1 篇文章 0 订阅

前言

正则表达式的英文为 Regular Expression,所以我们通常采用这两个单词的首几个字母合在一起,把正则表达式相关的变量名定义为 regexp(单数) 或 regexps(复数) 。
正则表达式通常由一些普通字符,以及一些元字符组成。
普通字符:就是本身作为一个字符时,它不具有其他含义,像我们常用的大小写字母和数字。
元字符:就是除了本身作为一个字符外,他还可以表达其他含义(下图是部分元字符节选)。
正则表达式组成结构

正则元字符

1.正则:普通字符
正则表达式:a1b2c3d
a1b2c : false
a1b2c3d : true
a1b2c3d4e : false
2.正则:\d
\d 表示一个数字。
例如:
aaa\d: 表示验证的字符串后面必须以 aaa 开头,且以一个数字结尾
aaa\dbbb:aaa和bbb中间有一个数字
aaa\d\d:aaa后面跟2个数字
3.正则:\D
\D 表示一个非数字,它和上面 \d 的意思恰好相反
例如:
\D\D\D: 则表示一个长度为3,不包含数字的字符串
111\D222:则表示111和222中间,必须包含一个非数字
4.正则:\w
\w 表示一个字母(大小写均可)、数字,或下划线。
例如:
12\w45:则表示12和45中间必须是一个字母,数字,或下划线
5.正则:\W
\W 与 \w 相反,表示这个位置的字符既不是字母、数字,也不是下划线。
特殊符号(除下划线),或者空格等满足。
例如:
12\w45:则表示12和45中间是一个非字母,非数字,或非下划线。
6.正则:\s
\s 表示匹配一个看不见的符号,即空格或制表符(Tab键)
例如:
88\s99:则表示88和99中间须是一个空格或制表符。
7.正则:\S
 \S 与 \s 相反,表示一个可以看得见的符号。
 例如:88\S99:则表示88和99中间须有一个看得见的符号。 
8.正则:.
 . (小数点) 则表示“\n”和"\r"之外的任何单个字符。
 例如:
 .... :则表示任意四个字符
9.正则:|
| (竖线) 则表示或的关系,表示检测的字符串须满足其中一个时,才符合条件。
注意,如果我们或者关系的前后还有其它字符时,需要用()将他们包裹起来。
例如:
xx(aa|bb|cc)yy:则表示输入的字符串须是xx开头,yy结尾,且中间是aa,或bb,或cc其中的一个。
10.正则:[abc]
[ ] 表示匹配其中任意一个字符。
例如:
a[bcd]e:则表示a和e的中间须是b,或c,或d其中的一个
11.正则:[ ^abc ]
[^ ] 表示不与中括号里的任意字符匹配。
例如:
a[^bcd]e:则表示a和e的中间除b,c,d这三个字符外,其他的字符都满足。
12.正则:[a-z]
[值1-值2] 则表示值1到值2中间的所有字符都满足(包括值1和值2)。常用该正则来表示大小写字母范围,数字范围。
例如:
a[b-d]e:等同于 a[bcd]e,因为 b-d 其实就是b,c,d三个数。
a[0-9]e:则表示a和e中间是一个数字,等同于 a\de(前面说过\d表示一个数字)
13.正则:[ ^a-z ]
[^值1-值2] 则表示除值1和值2之外的所有字符,都可以满足。
例如:
a[^1-3]e:则表示a和e中间的字符,只要不是1,2,3,则都满足。
14.正则:\num
这里的num指number,也就是数字,当\后面跟数字,表示匹配第几个括号中的结果。
例如:
1.现在有 abcd 字符串,当我们用小括号把 c 包裹起来后,然后在字符串后面写上 \1,即 ab(c)d\1,则这里的 \1 就指 c,因为 \1 表示第1个小括号中的结果。
ab(c)d\1:等同于 abcdc 。
2.继续把 ab(c)d\1 中的 d 包括起来,并在后面写上 \2,即 ab(c)(d)\1\2, 那么这里的 \2 就表示 d 这个字符,因为第2个小括号的结果是 d,所以整个表达式就等同于 abcdcd 。
ab(c)(d)\1\2:等同于 abcdcd,也等同于 ab(cd)\1 。
15.正则:?
? 表示匹配前面的子表达式零次或一次。
例如:
abc?de: 表示可匹配的字符串为 abde (匹配0次c) 或 abcde (匹配1次c)。
16.正则:+
匹配前面的子表达式一次或多次 (次数 >= 1,即至少1次)
例如:
abc+de:ab 和 de 之前至少有一个 c 。
17.正则:{n}
这里的 n 是一个非负整数。匹配确定的前面的子表达式 n 次。
例如:
abc{3}de:表示 ab 和 de 之间有3个c。
18.正则:{n,m}
m和n均为非负整数,其中 n<=m。最少匹配 n 次且最多匹配 m 次。
例如:
abc{2,3}de:表示 ab 和 de 之间有 2 到 3 个 c。
19.正则:*
表示匹配前面的子表达式任意次。
例如:
abc*de:表示 ab 和 de 之间有任意个数(包括0)c 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值