正则表达式
模式修饰符参数
i
:忽略大小写g
:全局匹配m
:多行匹配/hello/
:两个反斜杠是正则表达式的字面量表示法两个测试方法
- test
1
2const test = new RegExp('hello world', 'ig');
console.log(test.test('hello world')); // true - exec
返回的是数组,有就返回数组的值,没有返回为null。
1
2const test = new RegExp('hello world', 'ig');
console.log(test.exec('hello')); // null4个正则表达式方法
- match(pattern)
将所有匹配的字符串组合成数组返回
1
2
3
4const pattern=/Box/ig;
const str="This is a Box! The is a box!";
console.log(str.match(pattern)); - search(pattern)
返回字符串中pattern开始位置,忽略全局匹配
1
2
3
4const pattern=/Box/i; //
const str="This is a Box! The is a box!";
console.log(str.search(pattern)); // 10 - replace(pattern)
替换匹配到的字符串
1
2
3
4const pattern=/Box/ig;
const str="This is a Box! The is a box!";
console.log(str.replace(pattern,'Tom')); - split(pattern)
返回字符串指定pattern拆分数组
1
2
3
4
5
6
7const pattern = / /ig; //空格
const str = "This is a Box! The is a box!";
console.log(str.split(pattern)); //以空格进行分割,返回的是数组
// 输出结果
// [ 'This', 'is', 'a', 'Box!', 'The', 'is', 'a', 'box!' ]匹配模式
\w
表示a-zA-Z0-9_
- 锚元字符匹配
(^ $) ^
强制首匹配$强制尾匹配,并且只匹配一个1
2
3const pattern=/^[a-z]oogle\d$/;
const str="aoogle2";
console.log(pattern.test(str)); // true注意: ^
符号在[]
里面表示 非 在外边表示强制首匹配,并且只匹配一个 要想匹配多个值,使用+
\b
表示到达边界|
表示匹配或选择模式1
2
3const pattern=/baidu|google|bing/; //匹配或选择其中某个字符,不是相等,包含的意思
const str = "baidu a google";
console.log(pattern.test(str)); //返回true常用正则表达式
- 检查邮政编码
1
2
3
4const pattern = /^[1-9]{1}[0-9]{5}$/;
const str = "122534"; //共6位数,第一位不能为0
console.log(pattern.test(str)); // true - 压缩包后缀名
\w等于a-zA-Z0-9_ 使用^限定从首字母匹配 .是特殊符号需要\n进行转义 |选择符必须使用()进行分组1
2
3const pattern = /^[\w]+\.(zip|gz|rar)$/;
const str="a12_.zip"; //文件名 字母_数字.zip,gz,rar
console.log(pattern.test(str)); // true - 删除多余空格
方法一:使用replace只匹配一个,所以使用+匹配多个
1
2
3
4
5
6
7var pattern=/^\s+/;
var str=" google ";
var result=str.replace(pattern,'');
pattern=/\s+$/;
result=result.replace(pattern,'');
console.log('|'+result+'|'); // |google|方法二:(.+)贪婪模式,使用惰性模式,后面的空格不让匹配
1
2
3
4
5var pattern=/^\s+(.+?)\s+$/;
var str=" google ";
var result=pattern.exec(str,'')[1];
console.log('|'+result+'|');方法三:(.+)贪婪模式,改为惰性模式,使用分组模式,只取匹配的内容
1
2
3
4
5var pattern=/^\s+(.+?)\s+$/;
var str=" google ";
var result=str.replace(pattern,'$1'); //使用分组模式
console.log('|'+result+'|'); // |google| - 简单邮箱验证
1
2
3var pattern=/^([\w\.\_]+)@([\w\_]+)\.([a-zA-Z]){2,4}$/;
var str="qzfweb@gmail.com";
console.log(pattern.test(str)); // true