本文已参与「新人创作礼」活动,一起开启掘金创作之路。
三、正则表达式
-
以S开头的字符串
- ^: 可以限定一个字符开头
-
目标:ShelloShello world 表达式:^Shello
-
以数字结尾的字符串
-
$:可以限定结尾
-
表示数字方式:
- [0123456789]
- [0-9]
-
目标:helloworld9 表达式:helloworld[0-9]$
-
-
匹配空字符串(没有任何字符)
- ^$
-
字符串只包含三个数字
- 三个数字:[0-9][0-9][0-9]
-
字符串只有3到5个字母
-
字母表示:
- [a-zA-Z], 中间不要加空格
- 三个到五个字母:[a-zA-Z]{3,5}
-
重复次数{m, n}:
- 匹配前面修饰字符的次数,最少m次,最多n次
-
-
匹配不是a-z的任意字符
- ^ 在[]内部的时候,表示取反(注意,不是限定开头)
- ^[^0-9] : 以非数字开头的字符
- 内反,外头
- [^a-z] <<<===
-
字符串有0到1个数字或者字母或者下划线
-
表示0-1的方法
- {0,1}
- ? : 表示0,1个
-
[a-zA-Z0-9_]?
-
内容 hello hello1 hello* 正则: hello[a-zA-Z0-9_]? 匹配结果: hello hello1 hello
-
-
字符串有1个或多个空白符号(\t\n\r等)
- \s ==》 代表空格
- +:一个或多个
-
内容:hello world 正则:hello\s+world 结果:hello world
-
字符串有0个或者若干个任意字符(除了\n)
- .: 点,代表任意字符,除了\n
- *:星号,重复前一个字符0-n次
- 匹配任意字符,任意次数:通常做法,是: .* ==> 相当于通配符里面的 *
-
内容:hello asdfaasdfasdfadfasdfasdf asdfasdfasdf world 正则:hello.*world 结果:hello asdfaasdfasdfadfasdfasdf asdfasdfasdf world - .{,} ==> 与 .*效果相同
-
小结:
- ? ===> 重复前面一个字符0-1
-
- ===> 重复前面一个字符1-n
-
- ===> 重复前面一个字符0-n
- . ===> 表示任意字符
- ^ ===> 限定以某个字符开头
- [^a-z] ===> 在方括号内,表示取反(非a-z的任意字符)
- $ ===> 限定以某个字符结尾
- 数字 ====》 [0123456789] 或[0-9]
- 字母 ===> [abcd] [a-zA-Z]
-
匹配0或任意多组ABC,比如ABC,ABCABCABC
- 使用()进行分组,组成新的匹配单元
- (ABC)*
-
字符串要么是ABC,要么是123
- (ABC|123)
-
内容: ABC ABCABCABCD 123456 hellowlrd 正则:(ABC|123)
-
字符串只有一个点号
- ^.$
-
匹配十进制3位整数 :
-
0~999 , 5, 10 , 200, 999
-
分段匹配:
-
一位数:
- [0-9]
-
二位数:
- [1-9][0-9]
-
三位数:
- [1-9][0-9]{2}
-
整合:
- ^ ([0-9]|[1-9][0-9]{1,2})$
-
-
-
匹配0-255的整数, ip地址
-
分段
-
一位:[0-9]
-
二位:[1-9][0-9]
-
三位:
-
100- 199
- 1[0-9]{2}
-
200-249
- 2[0-4][0-9]
-
250-255
- 25[0-5]
-
-
整合:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$- 192.168.1.1
-
-
-
匹配端口号
- 0~65536
-
email
[\w!#$%&'*+/=?^_`{|}~-]+(?:.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?.)+[\w](?:[\w-]*[\w])?
三种正则表达式:
-
基础正则:(不使用) ==》 +?* 都当成普通字符来处理
-
扩展正则:(我们默认使用这个)==》 +?* 当成特殊字符
-
Perl正则:
- +?*是特殊字符
- \d ==》 数字 [0-9]
- \w ==> 字符[a-zA-Z]
- 用法\d{3}\w 可以匹配:212c