正则表达式对象的创建
- 构造函数
var pattern =new RegExp(“正则表达式”,“修饰符”);
修饰符只能是g m i,可以省略
var pattern =new RegExp(“abc”,“ig”); - 字面量
var pattern = /正则表达式/修饰符;
var pattern = /abc/ig;
修饰符
i:ignore case 不区分大小写
m:multiline 多行匹配
如果目标字符串中没有\n的话,m修饰毫无意义
g:global 全词匹配
如果加了这个修饰符的话,在匹配时会维护一个lastIndex的属性,用来记录当前匹配到这个字符串时的结束的位置,下一次匹配会从lastIndex开始。
方法
- exec(参数) ——执行正则,从参数获取目的字符串
参数:字符串
返回值:类数组对象
[数组(查询到的结果),index(索引),input(操作的字符串),…]
var pattern=/abc/g;
var str="abc";
var result=pattern.exec(str);//console.log(pattern.exec(str));
console.log(result);
//结果:[ 'abc', index: 0, input: 'abc', groups: undefined ]
- test()——用来检测一个字符串是否匹配某个模式
参数:字符串
返回值:boolean类型 true/false
var pattern=/abc/i;
var str='hello 123 abc";
console.log(pattern.test(str));//true
- toString()——转为字符串
参数:无
返回值:string
//var pattern=/abc/i;
var pattern=new RegExp("abc","i");
console.log(pattern.toString());
原型属性 RegExp.prototype.
global
ignoreCase
multiline
lastIndex
source
flags (修饰符)
…
String对正则表达式的支持
函数名 | 调用者 | 功能 | 参数 | 返回值 | 注意 |
---|---|---|---|---|---|
match() | string | 从一个字符串中将符合条件的内容提取出来 | 正则表达式 | 数组(匹配成功结果组成的数组) | 只会找到第一个符合条件的内容,可以设置为全局匹配 |
search() | string | 搜索字符串中是否含有指定内容 | 正则表达式,如果参数不是正则表达式,会先用RegExp将其转为构造函数 | 匹配成功返回第一个成功的位置,如果不成功返回-1(同indexOf) | 不支持全局检索 |
replace() | string | 检索替换 | 第一个参数是正则表达式,第二个参数是要替换的字符串 | 替换后的string | 不影响原来的字符串 |
split() | string | 将一个字符串拆分非一个数组 | 正则表达式,可以根据正则表达式去拆分字符串 | 拆分后的数组 |
正则表达式的规则
- 字符类
字符 | 作用 |
---|---|
. | 用来匹配任意单个字符,行结束符除外 |
\d | 匹配任意的一个阿拉伯数字;等价于[0-9] |
D | 匹配任意一个不是阿拉伯数字的字符;等价于[^0-9] |
\w | 匹配任意字母、数字、包括下划线;等价于[A-Za-z0-9_] |
\W | 匹配任意不是字母、数字、下划线;等价于[^A-Za-z0-9_] |
\s | 匹配一个空白符,包括空格、制表符、换页符、换行符和其他 Unicode 空格 |
\S | 匹配一个非空白符 |
^ | 表示匹配输入开始 |
$ | 表示匹配输入结尾 |
- 字符集
[xxx] 一个字符集合,也叫字符组,匹配集合中的任意一个字符。可以通过-来指定范围。
例如:[012]、[0-9]、 [a-z]…
[^xxx] 反义字符,它匹配任意不在括号内的字符。可以通过-来指定范围。
例如:[^123ab] 、 [^a-z]…
3.其它
x|y 匹配x或y
x{n} n是一个正整数。前面的模式 x 连续出现 n 次时匹配