javascript之正则表达式简述

版权声明:本文为博主原创文章,如需转载,注明来源即可。 https://blog.csdn.net/c_lam_e/article/details/81706012

正则表达式的表达形式有两种:字面量形式、字符串形式
字面量形式
var pattern = /pattern/flags;
字符串形式:
var pattern1 = new RegExp(“pattern”,“i”);
由flags可知,一个正则表达式可以带一个或多个标志
正则表达式的标志有:
g(global):全局模式
i(ignoreCase):忽略大小模式
m(multiline): 多行模式

在模式中使用元字符时需要进行转义,元字符主要如下(括号、模式中用到的特殊字符):

 ( [ { \ ^ $ | ) ? * + . ]}

模式中用到的特殊字符及其含义
表格描述
正则表达式中的方法
regObj.test(strObj)//返回布尔值,如果有则返回true
regObj.exec(strObj)
()表示捕获型分组,可以将匹配的字符串进行分组,提取子串。
如果正则表达式中定义了组,就可以在RegExp对象上用exec()方法提取出子串来。
exec()匹配成功后,返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。
exec()匹配失败时返回null。
strObj.search(regObj) //search(),忽略全局搜索
strObj.match(regObj) //match(),匹配符合的项,是否全局搜索会有不同
strObj.replace(regObj,replaceStr) //替换

<script>
    var string = "this is a teSt for Pattern是 不no 是yes yeah呀!";
    var pattern = /[a-zA-Z]+/g;  //由一个或多个英文字符串组成的字符串(全局搜索)
    var execPattern = /([a-zA-Z]{3})([a-z]?)/;
    var t = pattern.test(string);
    var ep = execPattern.exec(string);
    var s = string.search(pattern);  //
    var m = string.match(pattern);  //匹配字符串中的所有英文字符串,最后返回一个数组
    var r = string.replace(pattern,"谭");  //将符合条件的模式替换成谭
    console.log("exec()---"+ep);
    console.log("test()---"+t);
    console.log("seach----"+ s);
    console.log("match----"+ m);
    console.log("replace----"+ r);
</script>

以下是上述表达式的各个结果:
结果图示

除此之外还有一个方法
split()
字符串中有关正则表达式的模式匹配的方法
接受两个参数,前一个参数是分隔符,其中分隔符可以是字符串,也可以是正则表达式;第二个参数是数组的个数

<script>
    var string = "this is a teSt for Pattern是 不no 是yes yeah呀!";
    var splitpattern = /[^a-zA-Z]/;  //split的分割正则表达式
    var splitpattern1 = /[^a-zA-Z]+/;  //split的分割正则表达式
    var sp = string.split(splitpattern);
    var sp1 = string.split(splitpattern1);
    console.log("原String字符串---"+string);
    console.log("split---"+sp);       //split---this,is,a,teSt,for,Pattern,,,no,,yes,yeah,,
    console.log("split1---"+sp1);     //split1---this,is,a,teSt,for,Pattern,no,yes,yeah,
    //上述结果最后出现了一个逗号,这其实是因为最后一个子字符串为空字符。这种情况是由于将非英文字符串最为分隔符,
    //如果最后一个字符串为非英文字符时,分割后的最后一个字符必然为空字符串,但是如果最后一个字符串为英文字符时
    //就不会出现最后一个字符串为空字符的情况。针对这种情况需要进行一个判断
    if(sp1[sp1.length-1]==""){
    sp1.pop();   //分割的最后一项为空字符串,所以采用数组的pop()方法将最后一项移除
    }
    console.log("pop() 以后split1的值是---"+sp1);//pop() 以后split1的值是---this,is,a,teSt,for,Pattern,no,yes,yeah
</script>

结果图如下
结果图展示

展开阅读全文

没有更多推荐了,返回首页