一.正则表达式 - 火星文
1.正则的学习目标
1.1.表单验证。
1.2.了解正则暴力解决算法问题。
1.3.了解生活中一些常用正则的规则。
二.正则表达式的概念
正则表达式(regular expression)是一个描述字符规则的对象,使用正则表达式可以对字符进行强大的模式匹配和文本检索与替换。
// var str = ‘f789%%$%3hjfs11dGH^&^&JGF222&&US()tyuewry763844hK333KKFGSDFYT’;
// console.log(str.match(/\d+/g));
// console.log(str.match(/[A-Z]+/g));
// console.log(str.replace(/\W/g, ‘*’));
三.正则对象的创建
1.利用类创建 - RegExp
// var reg = new RegExp(‘hello’, ‘i’); // reg:正则对象 RegExp:类,构造函数
// 参1:正则表达式实现的规则,可以是变量或者字符串。
// 参2:可选的,修饰符 i:忽略大小写,m:多行匹配,g:全局匹配,修饰符可以多个写到一起,比如ig,img,mg
2.利用字面量(//)创建
// 参1:第一个参数写在双斜杠里面,必须是字符串,无需添加引号。
// 参2:可选的,修饰符,写在双斜杠的外面,修饰符可以多个写到一起,比如ig,img,mg
// var reg = /hello/i;
一.正则对象的方法
test(str)方法在字符串中查找是否存在指定的正则表达式并返回布尔值,存在返回true,不存在返回false。 // var reg = /hello/; // console.log(reg.test(‘abcdhellodefg’)); //true // console.log(reg.test(‘abcdhEllodefg’)); //false // console.log(reg.test(‘abcdheellodefg’)); //false 连续的hello // var reg = /hello/i; // console.log(reg.test(‘abcdhellodefg’)); //true // console.log(reg.test(‘abcdhEllodefg’)); //true 忽略大小写 // console.log(reg.test(‘abcdheellodefg’)); //false exec(str)方法以数组的形式返回匹配的结果,即使在模式中设置了全局标志(g),每次也只返回第一个匹配项 // var reg = /a/; // console.log(reg.exec(‘what at ta’)); //[‘a’, index: 2, input: ‘what at ta’, groups: undefined] 二.支持正则的字符串方法 1.使用 replace 替换匹配到的数据,2个参数:1代表正则,2代表用来替换的字符(也可以是函数) // var str = ‘a1b2c3d4e5f’; // console.log(str.replace(/[0-9]/g, ‘’)); //将数字替换成空 abcdef var cc = “17600003333”; var k =/(\d{3})\d{4}(\d{4})/; var res = cc.replace(k,’$1$2’);console.log(res); //1763333 注:在replace方法中,如果正则中有多个子表达式,替换的时候,使用”$1”表示匹配的第一个子表达式, 用$2表示第二个子表达式,以此类推。
2.使用 split 拆分成字符串数组,第一个参数可以是正则
// var str = ‘a1b2c3d4e5f’;
// console.log(str.split(/[0-9]/g)); //[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]
3.使用 match 方法获取匹配内容,返回数组,第一个参数可以是正则。
// var str = ‘f789%%$%3hjfs11dGH^&^&JGF222&&US()tyuewry763844hK333KKFGSDFYT’;
// console.log(str.match(/[a-z]+/g)); //[‘f’, ‘hjfs’, ‘d’, ‘tyuewry’, ‘h’]
4.使用 search 来查找匹配数据,和全局没有关系,查找第一个匹配值的位置。在字符串中搜索符合正则表达式的结果。如果找到结果返回结果的起始位置,停止向后检索,也就是说忽略全局标识符g;如果没有匹配结果,返回-1 。search会忽略全局标识
// var str = ‘a1b2c3d4e5fa1b2c3d4e5f’;
// console.log(str.search(/c/g)); //4
// console.log(str.indexOf(‘c’)); //4
注意:上面的六个方法都是支持正则的方法。
核心关注:
正则:test
字符串:replace/split/match