目录
正则
正则就是处理字符串的一种规则
正则的创建
// 字面量的方式 /元字符/
var reg = /\d/; // \d:0-9之间任意的数字 包含0-9之间的任意数字即可
// 构造函数方式 new RegExp("");
正则的创建的区别
var name = "中公教育";
var reg = /\d+"+name+"\d+/;
console.log(reg.test('89789789"""""""""""""nameeeeeeeeeee"90790890890890'));
// 字面量的方式创建正则不支持变量
// 构造函数方式
// 支持变量
// 通过构造函数方式进行创建的时候 带有转义字符的元字符 要用\\
// new RegExp("元字符","修饰符");
var reg1 = new RegExp("\\d+" + name + "\\d+");
console.log(reg1);
console.log(reg1.test("2131231中公教育879789987"));
正则的两大作用
正则匹配
看当前字符串是否符合正则规则 返回值是一个布尔值 符合返回->true 不符合返回false
var reg = /\d/; // \d:0-9之间任意的数字 包含0-9之间的任意数字即可
// reg.test(字符串);
console.log(reg.test("哈哈"));//false
console.log(reg.test("哈0哈"));//true
正则捕获
将符合规则的字符串获取到返回一个数组
// reg.exec(字符串);
console.log(reg.exec("9he7llo"));
/*
['9', index: 0, input: '9he7llo', groups: undefined]
0: "9" 捕获到的内容
groups: undefined 分组
index: 0 索引
input: "9he7llo" 字符串本身
length: 1 长度
*/
正则的组成
正则由元字符和修饰符组成,修饰符可以省略,大部分的元字符表示本身的含义,部分元字符表示特殊的含义 /元字符/修饰符
特殊元字符
- \:转义字符 转义后边字符所代表的含义
- ^:以某一个元字符开头
- $:以某一个元字符结尾
- \d:0-9任意的数字
- \w:数字 字母(A-Z a-z) 下划线 任意字符 [a-zA-Z0-9_] =>[a-z] + [xyz]
- \W:除了数字 字母(A-Z a-z) 下划线以外任意字符
- \s:空白字符
- .:除了换行以外的任意字符
量词元字符
- *:0到多个
- ?:0或1个 可以出现可以不出现
- +:1到多个
- {n} 出现n次
- {n,}出现n到多次
- {n,m} 出现最少n次 最多m次
var reg = /d/;//包含d
console.log(reg.test("a"));//f
console.log(reg.test("addb"));//t
console.log(reg.test("ad0d9b"));//t
console.log(reg.test("11d"))//t
//只要包含0-9之间任意的数字即可
reg = /\d/;
console.log(reg.test("a"));
console.log(reg.test("addb"));
console.log(reg.test("ad0d9b"));
reg = /^\d$/; //必须是0-9之间任意的一个数字(只能有一个) 一旦加了^和$元字符是严格匹配 每个元字符都占一个位置
console.log(reg.test("ad0d9b"));
console.log(reg.test("01"));
reg = /^\d\d\d\d\d\d\d\d\d\d\d$/;
console.log(reg.test("18701282528"));
console.log(reg.test("187012825281"));
reg = /^\d{11}$/;
console.log(reg.test("18701282528"));
console.log(reg.test("187012825281"));
reg = /^\d{8,11}$/;
console.log(reg.test('03917'));//false
console.log(reg.test('15090390157'));
console.log(reg.test('150903917'));
console.log(reg.