正则表达式
1.创建正则
<script>
// RegExp js的内置对象
// js内置对象:Number String Boolean Math Date Array RegExp
// 创建一个正则表达式(自定义一个匹配规则)
// 1.字面量创建
// var reg = /a/;
// 2.使用new 调用RegExp 构造函数
var reg = new RegExp(/book/);
console.log(reg);
console.dir(reg)
</script>
2. 测试正则表达式
test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串。
<script>
// 创建一个匹配规则
// var reg = /nice/;
var reg = /nice/i;
var str = "today is Nice day";
var reg2 = /a/g;
var str2 = "aaaaaaaaaaa";
// 验证 字符串
// test 返回值是一个布尔值
console.log(reg.test(str));
console.log(reg2.test(str2));
// i 忽略大小写
// g 全局匹配
// gi 全局匹配+忽略大小写
// exec() 方法用于检索字符串中的正则表达式的匹配。如果字符串中有匹配的值返回该匹配值,否则返回 null。
// 如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的 lastIndex 属性
console.log(reg2.exec(str2))
console.log(reg2.exec(str2))
console.log(reg2.exec(str2))
console.log(reg2.exec(str2))
</script>
3.边界符
正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符--精确匹配
<script>
// ^ 以谁开始
// $ 以谁结束
// var reg = /^abc/
// var reg = /abc$/
var reg = /^abc$/;
var str = "abcdefghijklmnopqrstuvwxyz";
var str2 = "defghijklmnopqrstuvwxyzabc";
var str3 = "abcdefghijklmnopqrstuvwxyzabc";
var str4 = 'abc'
// console.log(reg.test(str));
// console.log(reg.test(str2));
// console.log(reg.test(str2));
console.log(reg.test(str3));
console.log(reg.test(str4));
</script>
4. [ ] 中括号
有一系列字符用中括号括起来,表示匹配其中的任一字符,多选一
5.量词符
量词符用来设定某个模式出现的次数。
6.括号总结
7. 元字符类
预定义类指的是某些常见模式的简写方式.
案例:
//用户名:
/^\w{5,20}$/
验证手机号:
/^1[3|4|5|7|8]\d{9}$/
验证邮箱 xxx@qq.com:
/\w+@\w+\.\w+(\.\w+)?/
验证密码:
/^[a-zA-Z0-9_-]{6,16}$/
8. 正则提取
String对象的match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。返回值是存放匹配结果的数组。该数组的内容依赖于RegExp 是否具有全局标志 g。
//1. 提取email地址
var str = "123123@qq.com,ziyuanyihe@163.cn 87666444@qq.com englishtown.com 222669312@qq.com...";
var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g);
console.log(array);
9. 正则替换和查询
var str = "abc,efg,123,abc,123,a";
console.log(str.search(/a/));
console.log(str.replace(/,|,/g, '.'));