正则表达式
1.定义正则表达式
reg = /正则表达式/
1. /.../ 用于定义正则表达式
2. /.../g 表示全局匹配
3. /.../i 表示不区分大小写
4. /.../m 表示多行匹配
JS正则匹配时本身就支持多行,此处的多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容
1 例子:
2 var pattern = /^java\w*/gm;
3 var text = "java aaa\njava bbb"
这样即使换行了,还是符合匹配要求(以java开头),可以匹配出两个内容,如果没有m就只匹配一个
2.利用正则表达式
1.test(string) 检查和字符串中是否和正则表达式匹配
reg.test(字符串) 匹配就返回true
2.exec(string) 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
1 非全局模式(只匹配第一次)
2 获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
3 可以对匹配出来的内容进行分组,把匹配的内容提取出来
4 如:
5 var pattern = /\bJava\w*\b/;
6 var text = "JavaScript is more fun than Java or JavaBeans!";
7 result = pattern.exec(text)————["JavaScript"]
8
9 var pattern = /\bJava(\w*)\b/;
10 var text = "JavaScript is more fun than Java or JavaBeans!";
11 result = pattern.exec(text)——————["JavaScript","Script"]
12
13 全局模式(匹配所有)
14 需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
15 var pattern = /\bJava\w*\b/g;
16 var text = "JavaScript is more fun than Java or JavaBeans!";
17 执行一次:result = pattern.exec(text)————————————["JavaScript"]
18 两次:result = pattern.exec(text)————————————["Java"]
19 三次:result = pattern.exec(text)————————————["JavaBeans"]
20 最后一次:result = pattern.exec(text)————————————["null"]
21
22 var pattern = /\bJava(\w*)\b/g;
23 var text = "JavaScript is more fun than Java or JavaBeans!";
24 result = pattern.exec(text)
3.字符串中相关的方法
1 1.obj.search(正则表达式)
2 获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)
3
4 2.obj.match(正则表达式)
5 获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部
6
7 3.obj.replace(正则表达式,替换的内容) 通过正则表达式找到内容,然后把找到的内容变成替换的内容。
8 替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,
9 $数字:匹配的第n个组内容;
10 $& :当前匹配的内容 obj.replace (正则表达式,替换的内容$&) 把匹配的内容和替换的内容结合
11 $` :位于匹配子串左侧的文本
12 $' :位于匹配子串右侧的文本
13 $$ :直接量$符号 想要输入$ 要有两个$($$)