RegExp(regular expression)正则表达式
RegExp是JavaScript的对象之一
1.语法
var patt = new RegExp(pattern,modifiers) – 这里就相当于新建了一个RegExp对象;
简介语法:
var patt = /pattern/modifiers; --常用这种写法
2.修饰符
一共有三种:i/g/m
**i:**对大小写不敏感 – 就是不区分大小写
**g:**全局匹配 – 不会因为找到了停止匹配
**m:**多行匹配 – 就是
3.模式
3.1 方括号 [ ]
匹配【】之间的内容;例如:[a-z],匹配a-z之间的内容,[abc]查找集合内的字符,[^abc]查找集合之外的内容 等等。
3.2 元字符
. 单个字符,除了换行和行结束符
元字符 | 解释 | 元字符 | 解释 |
---|---|---|---|
\w | 查找单词字符(中文也算) | \W | 查找非单词字符 |
\d | 查找数字字符 | \D | 查找非数字字符 |
\s | 查找空白字符 | \S | 查找非空白字符 |
\0 | 查找NUL字符 | \r | 回车符 |
\f | 换页符 | \n | 换行符 |
\t | 制表符 | \v | 垂直制表符 |
\xxx | 以八进制xxx规定的字符 | \xdd | 以十六进制xdd规定的字符 |
\uxxxx | 以十六进制xxxx规定的Unicode字符 | . | 单个字符,除了换行和行结束符 |
3.3 量词
量词 | 解释 | 量词 | 解释 |
---|---|---|---|
n+ | 匹配包含 >=1个n 的字符串 | n* | 匹配包含 >= 0 个n 的字符串 |
n{x} | 匹配包含 x个n 的字符串 | n{x,y} | 匹配包含 [x,y]个n 的字符串 |
n{x,} | 匹配包含至少 x 个n 的字符串 | n? | 匹配包含 0个或1个 n的字符串 |
^n | 匹配以n开头的字符串 | n$ | 匹配以n结尾的字符串 |
?=n | 匹配其后紧接n的字符串 | ?!=n | 匹配其后不紧接n的字符串 |
4.RegExp对象方法
4.1 compile
编译正则表达式
用法 :RegExpObject.compile(RegExp,modifier)
var patt = new RegExp;
patt.compile('[abc]','i');
console.log(patt);
结果:
4.2 exec
检索字符串中指定的值。返回找到的值,并确定其位置。
用法:RegExpObject.exec(string)
var foo = 'hello world!';
var patt = /[adl]/g;
var result = patt.exec(foo)
console.log(result);
结果:
这里可以看出,exec只找到一个值就返回停止继续找了,所以exec返回的是第一匹配的值,并返回其序号值。
4.3 test
检索字符串中指定的值。返回 true 或 false。
用法:RegExpObject.test(string)
var foo = 'hello world!';
var patt = /[adl]/g;
var result = patt.test(foo)
console.log(result);
结果:
5.支持正则表达式的string对象方法
5.1 search
检索与正则表达式相匹配的值;返回匹配的起始序号值
用法:string.search(searchvalue) – searchvalue:查找的字符串或者RegExp
var foo = 'hello world!';
var patt = /[adl]/g;
var result = foo.search(patt)
console.log(result);
结果
5.2 match
找到一个或多个匹配的值;返回一个或多个匹配的值
用法:string.match(searchvalue)
var foo = 'hello world!';
var patt = /[adl]/g;
var result = foo.match(patt)
console.log(result);
结果
5.3 replace
替换与正则表达式匹配的子串;返回替换后的字符串
用法: string.replace(searchvalue,newvalue)
var foo = 'hello world!';
var patt = /e/g;
var result = foo.replace(patt,'a')
console.log(result);
结果
5.4 split
把字符串分隔成字符串数组;
用法:string.split(separator,limit) – separator(可选):从该参数指定的地方分隔字符串,limit(可选):指定返回数组的最大长度
var foo = 'hello world!';
var patt = /e/g;
var result = foo.split("",4)
console.log(result);
var result = foo.split(' ');
console.log(result);
结果