概述
用于匹配字符串中字符组合的模式,JavaScript中正则表达式也是对象。
正则表达式通常用来检索、替换文本,比如验证表单、搜索。
使用
创建正则表达式
利用RegExp对象的构造函数创建
var 变量名=new RegExp(/表达式/);
字面量创建
var 变量名=/表达式/;
test方法用来检测字符串是否符合正则表达式
正则表达式变量.test(要检测的字符串);
exec方法用于检索字符串中的正则表达式匹配,如果有匹配值返回匹配值,没有返回Null
正则表达式.exec(要检测的字符串);
console.log(/o/.exec('hello'));
//['o', index: 4, input: 'hello', groups: undefined]
特殊字符
比如^, $, + …
边界符^和$
^ 表示以谁开始
$ 表示以谁结束
/abc/
表示包含abc的字符串
/^abc/
表示必须以abc开头的字符串
/^abc$/
表示必须是abc的字符串,精准匹配
字符类[ ]
[abc]
[]表示一系列字符,字符串中只需要有其中一个就可以了
/^[abc]$/
必须是[]里的一个字符,精准匹配一个字符
console.log(/^[abc]$/.test('a')); //true
console.log(/^[abc]$/.test('aa')); //false
[ ] 里的^表示取反
/^[^a-zA-Z0-9_-]$/ 表示不属于大小写英文字母、数字、下划线、横杠
范围 -
/^[a-z]$/
匹配26个小写英文字母的一个
console.log(/^[a-z]$/.test('a')); //true
console.log(/^[a-z]$/.test('aa')); //false
字符组合
/^[a-zA-Z0-9_-]$/
匹配26个大小写英文字母或数字或下划线或横杠的一个
console.log(/^[a-zA-Z0-9_-]$/.test('a')); //true
console.log(/^[a-zA-Z0-9_-]$/.test('aa')); //false
量词符
设置某个模式出现的次数
量词 | 说明 |
---|---|
* | 重复0次或更多次 ,>=0 |
+ | 重复一次或更多次,>=1 |
? | 重复0次或一次 ,1或0 |
{n} | 重复n次,==n |
{n,} | 重复n次或n次以上, >=n |
{n,m} | 重复n~m次 ,>=n,<=m |
/^a*$/
表示a重复0次以上
console.log(/^a*$/.test('')); //true
console.log(/^a*$/.test('aaa')); //true
/^a+$/
表示a重复1次以上
console.log(/^a+$/.test('')); //false
console.log(/^a+$/.test('aaa')); //true
/^a?$/
表示a重复0次或1次
console.log(/^a?$/.test('')); //true
console.log(/^a?$/.test('a')); //true
console.log(/^a?$/.test('aaa')); //false
/^a{3}$/
表示a重复3次
console.log(/^a{3}$/.test('a')); //false
console.log(/^a{3}$/.test('aaa')); //true
预定义类
预定类 | 说明 |
---|---|
\d | 0-9的任一字符相当于[0-9] |
\D | 0-9以外的字符,相当于[^0-9] |
\w | 相当于[a-zA-z0-9_] |
\W | 相当于[^a-zA-z0-9_ ] |
\s | 匹配空格,包括换行符、制表符、空格,[\t\r\n\f\v] |
\S | 匹配非空格 ,[^\t\r\n\f\v] |
分组()
()包起来的内容表示一个分组,可以通过分组提取自己想要的内容。
console.log(/(name)abc/.exec('name:xiaoming,nameabc'));
//['nameabc', 'name', index: 14, input: 'name:xiaoming,nameabc', groups: undefined]
替换
stringObject.replace(被替换的字符串/正则表达式,替换的字符串); //返回替换完的新字符串
var str='aabbccddaa';
console.log(str.replace(/aa/,'xx')); //xxbbccddaa
正则表达式参数
/表达式/[参数]
g: 全局匹配
i: 忽略大小写
gi: 全局匹配+忽略大小写
var str='aabbccddaa';
console.log(str.replace(/aa/g,'xx')); //xxbbccddxx
常用正则表达式
Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
手机号码:^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$
日期格式:^\d{4}-\d{1,2}-\d{1,2}
中文字符的正则表达式:[\u4e00-\u9fa5]
空白行的正则表达式:\n\s*\r (可以用来删除空白行)
更多:https://c.runoob.com/front-end/854/