javascript中正则表达式的使用
1.正则表达式的组成
1.普通字符,或者称为直接量字符
如字母A、B,数字1,2等
a b c 任何一个字符都可以作为正则表达式的字符
[abcd] 表示一个字符 a或者b或者c或者d
[a-z] 表示所有的小写字母
[A-Z] 表示所有的大写字母
[h-m] 表示h到m之间的所有小写字母
[^abc] 表示除了abc之外的所有字符
[0-9] 表示所有的阿拉伯数字
[a-zA-Z_0-9] 表示单词字符[小写字母 大写字母,_,阿拉伯数字]
[a-gm-z]
2.限定符/数量词(数量词用在字符的后面,用来定义这个字符的个数)
?表示相关的模式出现零次或一次
*表示相关的模式出现零次或多次
+表示相关的模式出现一次或多次
{n} 表示相关的模式出现n次
{n,m} 表示相关的模式出现n到m次
{n,}表示相关的模式至少出现n,最多至无限多次
3.常用元字符串 预定义字符
\d 匹配数字
\D 匹配任意非数字的字符
\w 匹配字母或数字或下划线
\W 匹配任意不是字母,数字,下划线
\s 匹配任意的空白符
\S 匹配任意不是空白符的字符
. 匹配除换行符以外的任意单个字符
^ 表示匹配行首的文本(以谁开始)
$ 表示匹配行尾的文本(以谁结束)
4.边界词
^ 行开头
$ 行结尾
\b 单词边界
5.修饰词
g 全局匹配,默认情况下,正则表达式只匹配一次
全局匹配会将所有符合要求的内容匹配出来
i 忽略大小写
语法格式:/正则/gi
<script>
let str="hello World,Hello china,HELLO Newer";
//定义正则表达式
let regex = /Hello/ig;
let s = str.match(regex);
console.log(s);
</script>
6.分组及分组的捕获
案例:ac abbbbc addddddc aeeeeeeeec a********c
通过正则表达式匹配以上的格式
使用()对正则表达式分组
整个表达式默认是一个分组,下标默认是0
每一个分组都有一个默认的下标
下标是从0开始的连续的整数
由于一般情况下,整个表达式分组的括号是不写的,所以一般我们看到的第一个括号就是第二组,下标为1
通过下标可以捕获分组
捕获方式: \下标
A(B(CD)) 下标是0
(B(CD)) 下标是1
(CD) 下标是2
((ab)(cd)) 同级情况下从左到右
2.数量词的使用
数量词用在字符的后面,用来定义这个字符的个数
?表示相关的模式出现零次或一次
*表示相关的模式出现零次或多次
+表示相关的模式出现一次或多次
{n} 表示相关的模式出现n次
{n,m} 表示相关的模式出现n到m次
{n,}表示相关的模式至少出现n,最多至无限多次
3.贪婪性数量词和懒惰性数量词
JavaScript中默认是贪婪性的数量
java中在数量词后用+表示贪婪性
懒惰性数量词
{3,}? 数量是3次及以上,但尽可能少
{3,10}? 数量是3到10次,但尽可能少
?? 数量是0次或1次,但尽可能少
*? 数量是0次或多次,但尽可能少
+? 数量是1次或多次,但尽可能少
4.边界词的使用
^ 行开头
$ 行结尾
\b 单词边界
输出结果为 0: “hello”
1: “Hello”
2: “HELLO”
5.分组及分组的捕获
6.断言的使用
(?<=exp)regex 匹配一个正则表达式,左边必须满足断言条件
regex(?=exp) 匹配一个正则表达式,右边必须满足断言条件
可以在断言中加!
(?<!exp)regex 匹配一个正则表达式,左边必须不满足断言条件
regex(?!exp) 匹配一个正则表达式,右边必须不满足断言条件