正则表达式基础
创建正则表达式
构造函数
let reg = new RegExp("^[a-zA-Z]",'g');
let reg = new RegExp("/^[a-zA-Z]/,'g');
创建字面量
let reg = /^[a-zA-Z]/;
参数
g 全局匹配
i 匹配全部大小写
m 多行匹配
s 单行匹配
规则
. 任意字符
\d 0-9
\D 除\d外的字符
\w 0-9,a-z,A-Z,或者下划线
\W 除\w外的字符
\s 空格符,tab,换页或换行
范围
[…] 匹配字符范围之内的
[^…] 匹配字符范围以外的
^ 匹配以此开头的
$ 匹配以此结尾的
常用方法
- test()方法,检索字符串的值是否匹配给定规则,返回true或false
/\d\d/.test('12'); //true
- exec()方法,检索字符串中的指定值,如果找到匹配的文本,返回一个结果数组,否则返回null
/123/.exec('112123'); //["123",index: 3,input: "112123"]
- compile()方法,改变正则匹配的内容
/123/.compile('456'); // /456/
- split()方法,将字符串分割为字符串数组
"abcd".split(/b/); // ["a","cd"]
- replace()方法,在字符串中用一些字符替换另一些字符
"12345abcde".replace(/\d\d\d/g,'*'); //"*45abcde"
"123 45".replace(/\s/g,''); //"12345"
- search()方法,检索匹配的字符串,返回起始位置的索引
"abcde".search(/c/); //2
"abcde".search(/f/); //-1
常用匹配
- 13开头的手机号
/^(1)3{9}$/
- 某些号段的手机号验证
/^1(88|70|56)\d{8}$/
- 下划线和驼峰相互转换
// 驼峰转下划线,遇到大写字母时转化为小写字母,并在前面加上下划线,$1表示第一个字符串匹配
replace(/([A-Z])/g, '-$1').toLowerCase()
// 下划线转驼峰,\w表示下划线
replace(/\-(\w)/g, function(all, letter) {
return letter.toUpperCase()
})