正则表达式(1)

作者: 刘尐六 | 来源:发表于2016-11-04 21:47 被阅读0次

    正则表达式主要用来对用户输入的信息进行合法性验证,以节约服务器端的系统资源,提供更好的用户体验。

    一、什么是正则表达式

    正则表达式是一个描述字符模式的对象,用RegExp表示。String和RegExp都定义了利用正则表达式进行模式匹配和文本检索和替换的函数。

    二、正则表达式基础

    1、创建正则表达式

    1) 采用new运算符

    var box = new RegExp('Box');  //第一个参数是模式字符串
    alert(box); // /Box/,两个反斜杠是正则表达式的字面量表示法
    
    var box = new RegExp('Box' , 'igm');  //第二个参数是模式修饰符
    alert(box); // /Box/igm,i表示忽略大小写,g表示全局匹配,m多行匹配 
    

    2) 使用字面量

    var box = /Box/;
    var box = /Box/ig;
    

    2、测试正则表达式

    RegExp对象包含两个方法:test()和exec()。test()方法用于在字符串中测试模式匹配,返回true或false;exec()在字符串中执行匹配搜索,返回结果数组。

    //使用new运算符的test方法测试
    var pattern = new RegExp('Box'); //模式
    var str = 'box';  //字符串
    alert(pattern.test(str)); //false,大小写不一致,若加上i修饰符,则返回true
    
    //使用字面量的test()测试
    alert(/Box/i.test('box')); //true
    
    var pattern = /Box/i;    //不区分大小写匹配
    var str = 'This is a box!';  //一句话
    alert(pattern.test(str)); // true;
    

    综上,test()方法用于测试字符串中是否含有与正则表达式的模式相匹配的内容。

    //exec()方法测试,返回匹配数组
    var pattern = /Box/i; 
    var str = 'This is a box!';
    alert(pattern.exec(str)); //返回的数组,有就返回数组的值,没有返回null
    

    exec()还有具体的应用,后续再讲。

    3、使用字符串的正则表达式方法

    String()中的正则表达式方法如下表:

    方法 含义
    match(pattern) 返回pattern中的子串或null
    replace(pattern, replacement) 用replacement替换pattern
    search(pattern) 返回字符串中pattern开始的位置
    split(pattern) 返回字符串按指定pattern拆分的数组
    //使用match()方法获取匹配数组
    var pattern = /Box/ig; 
    var str = 'This is a box! That is a box!';
    alert(str.match(pattern)); //box,box;
    

    在上述例子中,由于开启了全局匹配,所以将所有的匹配结果组合成数组返回,如果没有g修饰符,则匹配到第一个字符串返回。

    //使用search()查找匹配数据
    var pattern = /Box/i; 
    var str = 'This is a box! That is a box!';
    alert(str.search(pattern)); //10,返回第一个匹配的位置,若没有,返回-1
    

    由于search()方法查找到即返回,所以不需要g修饰符

    //使用replace()替换查找到的数据
    var pattern = /Box/i; 
    var str = 'This is a box! That is a box!';
    alert(str.replace(pattern, 'tom')); //This is a tom! That is  a box!
    

    由于没有开启全局,只替换了第一个匹配的box,加上g才能替换所有的box。

    //使用splite()拆分成字符串数组
    var pattern = /!/ig; 
    var str = 'This is a box! That is a box!';
    alert(str.splite(pattern)); //This is a tom,  That is  a box, 
    alert(str.splite(pattern).length); //3, 后面还有一个空数组
    

    相关文章

      网友评论

        本文标题:正则表达式(1)

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