一.正则表达式 - 火星文

    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); //176
    3333 注:在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