美文网首页
JS正则表达式

JS正则表达式

作者: 流氓兔之夫 | 来源:发表于2018-07-13 23:25 被阅读15次

1.创建JS正则表达式

    let reg1 = /abc/g;

    let reg2 = new Reg('abc', 'g');

2.JS正则表达式的常用方法

    2.1 test

        reg1.test(字符串);

        查到则返回true,否则返回false。

        test方法的注意点

        如果表达式带有g修饰符,则每一次test方法都从上一次匹配结束的          位置开始匹配。

        例:

        let reg1 = /a/g;

        let reg1 = /a/g;

        let str1 = 'abcad';

        let r1 = reg1.test(str1);

        console.info(r1); // true

        r1 = reg1.test(str1);

        console.info(r1);//true

        r1 = reg1.test(str1);

        console.info(r1);// false

    2.2 exec

        返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回null。

       (1) 如果带g修饰符,继续匹配,会匹配到后面的字符

        var str = 'abcdabcb';

        var reg = /a/g;

        var res = reg.exec(str);

       // ["a", index: 0, input: "abcdabcb", groups: undefined]

        // ["a", index: 4, input: "abcdabcb", groups: undefined]

        (2) 如果不带g修饰符,继续匹配,每次都是从第一位开始匹配

          var str = 'abcdabcb';

        var reg = /a/g;

        var res = reg.exec(str);

        // ["a", index: 0, input: "abcdabcb", groups: undefined]

        // ["a", index: 0, input: "abcdabcb", groups: undefined]

        如果正则表达式包含圆括号,则返回的数组包含多个元素。首先是整个匹配的结果,后面是圆          括号里匹配的结果。

        var str = 'abcdabc';

        var reg = /(a)b(c)/;

        var res = reg.exec(str);

        console.log(res);//["abc", "a", "c", index: 0, input: "abcdabc"]

3.字符串相关的正则表达式方法

    3.1 search

      搜索符合正则的内容,搜索到就返回出现的位置(从0开始,如果匹配的不只一个字母,则返            回第一次出现的位置),如果匹配失败就返回-1。

    3.2 match

    在字符串中搜索符合正则的内容,搜索成功就返回数组,否则返回null

    var str = "abcd";

    var reg1 = /a/;

    var reg2 = /a/g;

    console.log(str.match(reg1));//["a", index: 0, input: "abcd"]

    console.log(str.match(reg2)); // ['a']

   3.3 repace(正则表达式, 新字符串/replace函数)

    (1) 符合正则表达式的,替换成新字符串

         varstr = "xxx";

         console.log(str.replace('x','y'));//yxx

         console.log(str.replace(/x/,'y'));//yxx

         console.log(str.replace(/x/g,'y'));//yyy

        特殊字符

      (2) replace函数

        先看个例子:

function replacer(match, a1, a2, a3, index, string) {

      console.info('match: ' + match); 5

      console.info('a1: ' + a1); // 空

      console.info('a2: ' + a2); //5

      console.info('a3: ' + a3); //空

      console.info('index: ' + index); // 0

      console.info('string: ' + string);原字符串

    return [a1, a2, a3].join(' ~ ');

}

var str = '5xyz45678%$&^';

var reg = /([^\d]*)(\d*)([^\w]*)/

var res = str.replace(reg, replacer);

console.log(res);//xyz ~ 45678 ~ %$&^

说明:

(1) match 为匹配的字符串

(2) a1为第一个子表达式匹配的字符

(3) a2为第二个子表达式匹配的字符

(3) a3为第三个子表达式匹配的字符

(4) 匹配的索引位置

(5) 完整的字符串

参考文章:

js正则表达式学习和总结

相关文章

网友评论

      本文标题:JS正则表达式

      本文链接:https://www.haomeiwen.com/subject/nxqepftx.html