美文网首页
JavaScript中的正则表达式

JavaScript中的正则表达式

作者: 我是胡汉三 | 来源:发表于2018-03-16 23:07 被阅读0次

01_复习字符串的操作

字符串是可以循环的

    function findNum(str){

        var arr =[];
        var temp = '';

        for(var i =0;i<str.length;i++){

            if(str.charAt(i)<='9'&&str.charAt(i)>='0'){
                temp +=str.charAt(i);
            }else{
                if(temp){
                    arr.push(temp);
                    temp = '';
                }
            }
        }

        if(temp){
            arr.push(temp);
            temp = '';
        }
        return arr;
    }
indexOf();
substring();
charAt();
spilt();

02_什么是正则和正则的写法

正则:也叫规则,让计算机能够读懂人类的规则

    /*和上文效果一样*/
    /*正则表达式比传统的方法性能要好*/

    function findNum(str){

        return str.match(/\d+/g);
    }

应用场景:比如说注册账号

正则都是用来操作字符串

正则其实也是一个系统对象


    var re = new RegExp('a');
    var res = //; 
//平时建议使用简写方式,简写方式比全写的方式性能要好。
//如果为空是注释。
//里面的东西并不是字符串

正则表达式的常用方法

  • test:字符串判断
  • search:字符串搜索
  • match 获取匹配的项目
  • replace 替换所有字符串'

正则中的test方法

//正则去匹配字符串,如果匹配成功就返回true,匹配失败就返回false。、
    //一般test就是做判断的

    var str = 'abcdef';

    var re = /b/;//里面的东西是一个整体

    alert(re.test(str));


/*
* 转义字符:
* \s 空格
* \S 非空格
* \d 数字
* \D 非数字
* \w 字符 [包括 字母 数字 下划线]
* \W 非字符
* */

/*
* RegExpObject.test(string)
*
* 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。
* */
var str = '12345678ziMu90';

var re = /\d/g; // 是扫描全部,全局不全局好像没啥关系

alert(re.test(str));//返回的true

正则中的search方法

console.log(str.search(/b/));//正则也可以直接这么写
正则默认区分大小写,如果不区分大小写,在/后面添加标识符 i

/*
* 正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1
*
* 字符串.search(正则);
*
* 正则当中默认区分大小写,如果不区分大小写的话,就添加i
*  */

var str = 'abcdefg';
    var re = /b/;
    var re_t = /G/i;
    var re_s = new RegExp('G','i');

    console.log(str.search(re));
    console.log(str.search(re_t));
    console.log(str.search(re_s));

正则中的match方法

    /*
    * match:正则去匹配字符串,如果匹配成功,就返回匹配成的数组,如果失败,就返回null
    *
    * 正则默认行为是匹配成功就会结束,不会继续匹配。
    *
    * 添加 G,全局匹配
    *
    * 找[固定]两位是\d\d
    *
    * 量词: 匹配不确定位置。+至少出现一次-> <=1
    *
    * */
    var str = 'hao432423hio52345huj2il';

    var re = /\d+/g;

    console.log(str.match(re));

正则中的replace方法

/*
*replaceChild();//替换节点
* replace :正则去匹配字符串,匹配成功的字符去替换新的字符串
*
* 字符串.replace(正则,新的字符串);
* */
// 默认行为是只替换一个
    var str = 'aaa';
    var re = /a/;
    var re = /a+/g; //这样就只有一个b了
    var str_1 = str.replace(re,'b');


    console.log(str_1);

正则中小括号的作用

    btn.onclick = function(){

        var re = /中国|美丽/g;

        text_2.value = text_1.value.replace(re,'**');
    }
    btn.onclick = function(){

        var re = /中国|美丽的船/g;

        text_2.value = text_1.value.replace(re,function($0){

            // 函数的第一个参数,就是匹配成功的字符,第二个参数可以是字符串也可以是回调函数
            //函数的第一个参数,就是匹配成功的字符
            var resule = '';

            for(var i=0;i<str.length;i++){

                resule+='*';
            }

            return resule;
        });

    }
//匹配子项:小括号() ,还有另外一层意思就是分组操作

    var re = /(\d-)+/g;
    var str = '2013-6-7';

//    var re = /(\d-)+/g

    var re = /(\d+)-/g;
    str.replace(re,function(str){

        /*
        * 第一个参数是母亲匹配的结果,第二个参数是第一个孩子匹配的结果,第三个参数是第二个孩子匹配的
        * */

/*如果小括号后面有不是孩子的符号,孩子也会加上飞括号的符号*/
        alert(str);
    })
// 需求:更改为 2013.6.7
    var str = '2013-6-7';

    var re =/-/g;
    
    var res = /(\d+)(-)/g;

    var newStr = str.replace(re,function($0,$1,$2){
        return '.';
          // $0就是匹配成功的字符
        //return $1+'';//res
        //return $0.substring(0,$0.length-1)+'.';//res
    });

var re = /(\d+)+/g;//+是针对的分组整体

  var str = 'abc';
    var re = /(a)(b)(c)/;
    
    alert(str.match(re));//[abc,a,b,c] 当match不加g的时候,才可以获取到子项的集合

正则中的字符类


    /*
    * [] 代表一个字符类,表示或 -> [abc] = a||b||c,整体代表一个字符
    *
    *     var re = /a[bde]c/;
    *    //var str = 'abdc'//这样返回的就是false
    * */

    var str = 'abc';
    var re = /a[bde]c/;//他只有三位

    alert( re.test(str));
  // 排除 :^ 如果^写在[]里面的话,就代表排除的意思
    //缩写 [a-z] 从小到大
    var re = /a[a-z0-9A-Z]c/;      这样也是可以的,其实只代表一位~
    var re = /a[a-z0-9A-Z]+c/;      这样也是可以的,其实只代表一位,但是可以出现一次或者多次~


//去掉html标签
    btn.onclick = function(){

        var re = /<[a-z0-9A-Z/]+>/g;
      //var re = /<[^>]+>/g;//不加上加号表示一个字符
        textTwo.value = textOne.value.replace(re,'');
    }

在正则当中有很多方法可以写出来,中括号里面都是或者的关系。

正则中的转义字符

/*
* . 任意字符 (\.代表真正的.)
* \s 空格
* \S 非空格
* \b 单词边界
* \B 非单词边界
* */

var str = 'abc';

var re = /a.c/;
//var re = /a\.c/;//这个才是真正的.
    /*
    * \b 独立的部分 -> 起始 结束 空格
    * \B 非独立的部分
    * */

    var str = 'one two';

    var re = /\bone\b/;
    alert(re.test(str));
function getByClass(oParent,sClass){

        var arr = [];
        var aElement = oParent.getElementsByTagName('*');
//        var re = /sClass/; 直接写并不会认为是传参
        var re  = new RegExp('\\b'+sClass+'\\b');//字符串一些特殊字符是不能够直接输出的5


        for(var i=0;i<aElement.length;i++){

            if(re.test(aElement[i].className)){

                arr.push(aElement[i]);
            }
        }
        console.log(arr);
        return arr;
    }

    alert('\\');// \ 不能够直接进行输入,要再添加一个\
    /*有些字符不能直接执行*/

正则中的重复子项

/*
* \1 重复子项
*
* \1 重复的第一个子项 [完全一样]
* \2 重复的第二个子项 [完全一样]
* */

    var str = 'abca';

    var re = /(a)(b)(c)\1/;

    alert(re.test(str));
//找出重复字符,并且统计得出重复次数

    var str = 'asssssjdsssassskkkkkvvvvssss';
    var arr = str.split('');

    str = arr.sort().join('');

    console.log(str);//adjkkkkksssssssssssssssvvvv

    var value = '';//表示值
    var index = 0;//表示出现的次数

    var re = /(\w)\1+/g;

    str.replace(re,function($0,$1){


        if(index<$0.length){

            index = $0.length;
            value = $1;
        }
    });

alert('出现最多的是'+value+'一共出现了'+index+'次');

正则中的量词和首尾匹配

    /*
    * 量词:用{}来表示
    * {4,7} 最少出现4次,最多出现7次
    * {4,} 最少出现4次
    * {4} 正好出现4次
    * +[一种简写] -> {1,} 最少出现一次
    * ?[一种简写] -> {0,1} 出现0次或者一次
    * *[一种简写] -> {0,} 至少出现0次
    * */

    var str = 'ab';
    var re = /ab+/;//表示b至少出现1次

    alert(re.test(str));//返回的是true
    /*
    *
    * ^ 放在正则的最前面位置,就代表着起始的意思
    * $ 正则的最后位置,就代表结束的意思
    * */
    var text = document.getElementById('text');
    var btn = document.getElementById('btn');

    var re = /^[1-9]\d{4,11}$/; //代表起始的位置必须是数字,结束的位置必须是4-11的数字

    btn.onclick = function(){

        if(re.test(text.value)){

            alert('是Q');
        }else{
            alert('不是Q');
        }
    }
//判断输入的是否是空格
    var str = ' hello ';

//    console.log(str);

    function trim(str){

        var re = /^\s+|\s+$/g;

        return str.replace(re,'');
    }


    console.log(str);
    console.log(trim(str));

建议把常用的添加到json中

相关文章

  • JS 正则表达式

    语法 常用的方法: javascript中如何声明一个正则表达式对象在JavaScript当中,声明一个正则表达式...

  • 正则

    ## 正则表达式 正则表达式是用于匹配字符串中字符组合的模式,在JavaScript中,正则表达式也是对象 ###...

  • Js正则表达式

    一、Js正则表达式概述 正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象...

  • JavaScript-正则表达式小记

    什么是正则表达式 正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。这些...

  • JavaScript中的正则

    正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象(RegExp)。 关于...

  • 原生js的基础方法等二

    JavaScript 正则表达式 正则表达式模式 调试 this JSON 字符串转换为 JavaScript 对...

  • 小结 | 正则表达式模式匹配

    正则表达式 是一个描述字符模式的对象。 JavaScript中的正则表达式用RegExp对象表示。 正则表达式的定...

  • 《JavaScript 闯关记》之正则表达式

    由于本课程的核心是 JavaScript,所以本文着重讲解了「正则表达式」在 JavaScript 中的用法,并未...

  • day5-正则表达式学习(基于JavaScript)

    JavaScript正则表达式 什么是正则表达式

  • 正则表达式01--创建一个正则表达式

    MDN 正则表达式是被用来匹配字符串中的字符组合的模式。在JavaScript中,正则表达式也是对象。这种模式可以...

网友评论

      本文标题:JavaScript中的正则表达式

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