🍇前言
正则表达式在几乎所有语言中都可以使用,无论是python还是前端的JavaScript、或是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。在你学会正则表达式之前,你只能看着大佬们随便写了一串乱七八糟的字符串,就轻而易举的替代了你用一大篇的if else代码来做一些数据校验。这对于我们来说真的是太痛苦了xdm。所以这篇文章让博主带着大家一起走进正则表达式的世界吧!!
🍈在线测试工具
这个在线工具还可以选择编程语言,可以说是相当的万能了。(强烈推荐)
在我们测试正则表达式的时候只需要复制一段字符就在TEST STRING,在上面输入我们的正则表达式就可以测试啦!!
🍉正则表达式中的基础用法
🌸1.限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * , + ,? , {n} , {n,} , {n,m}共6种。
- *限定符
匹配前面的子表达式零次或多次。
例:
这里表示a后面的b可以没有也可以出现多次,因此在这里匹配到了a,ab,abbbbb,abbbbbbbb字符。
- +限定符
匹配前面的子表达式一次或多次。
例:
这里表示a后面的b可以出现1次或者多次,那么没有b的就不符合我们的表达式。因此匹配到了ab,abbbbb,abbbbbbbb字符
- ?限定符
匹配前面的子表达式零次或一次。
例:
这里表示ab后面的b要么没有要么只出现一次。出现多次b的不符合我们的表达式。因此匹配到了ab,abb字符。
- {n}限定符
n 是一个非负整数。匹配确定的 n 次。
例:
这里表示a后面的b要出现4次。因此只能匹配到abbbb字符。
- {n,}限定符
n 是一个非负整数。至少匹配 n 次。
例:
这里表示a后面的b至少要出现3次。因此我们看到abbc并没有标注出来。匹配的结果为abbbbb,abbbbbbbb字符。
- {n,m}限定符
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
例:
这里表示a后面的b最少出现2次且最多出现3次。因此匹配到abb,abbb字符。
🌸2.普通字符
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。
- […]
匹配 […] 中的所有字符。
例:
2. [^…]
匹配除了 […] 中的所有字符。
例:
- [A-Z]
[A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。[0-9]表示所有的数字。
例:
4. .
匹配除换行符(\n、\r)之外的任何单个字符。相当于[^\n\r]
例:
- [\s\S]
匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。
例:
6. \w
匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
例:
🌸3.非打印字符
非打印字符也可以是正则表达式的组成部分。表示非打印字符的转义序列。
- \cx
匹配由x指明的控制字符。
- \f
匹配一个换页符。
- \n
匹配一个换行符。
- \r
匹配一个回车符。
- \s
匹配任何空白字符,包括空格、制表符、换页符等等。
- \S
匹配任何非空白字符。
- \t
匹配一个制表符。
- \v
匹配一个垂直制表符。
🌸4.特殊字符
所谓特殊字符,就是一些有特殊含义的字符,许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符**“转义”**,即,将反斜杠字符\ 放在它们前面。
- $
匹配输入字符串的结尾位置。
例:
- ( )
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。
例:
3. [
标记一个中括号表达式的开始。
例:
- \
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。序列 ‘\’ 匹配 “”。
- ^
匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。
例:
- |
指明两项之间的一个选择。
例: