JavaScript学习小结(7)之JS RegExp(3)

量词   描述   使用  
*   零次或任意次,相当于{0,}   不推荐使用,范围太广,不够精确。  
?   零次或一次,相当于{0, 1}   /10?/g 对1进行全局搜索,包括其后紧跟的零个或1个'0'。
 
+   一次或任意次,相当于{1, }   /w+/g 对至少一个单词进行全局搜索。  
{n}   正好n次   /d{4}/g 对包含四位数的数字进行全局搜索。  
{n,}   至少n次,最多不限   /d{3,}/g 对包含至少三位数的数字进行全局搜索。  
{n, m}   至少n次,最多m次    /d{3,4}/g 对包含三位或四位的数字进行全局搜索。  

下面是一些常用的匹配模式:

模式   描述   使用  
^a   任何开头为 a 的字符,表示行首   /^\d/ 以数字开头 /^a/g 全局搜索以'a'开头的字符  
a$   任何结尾为 a 的字符,表示行尾   /\d$/ 以数字结尾 /z$/g 全局搜索以'z'结尾的字符  
?=a   任何其后紧跟 a 的字符   /a(?= b)/g 全局搜索'a'后紧跟'b'的字符  
?!a   任何其后没有紧跟 a 的字符   /c(?= d)/g 全局搜索'c'后没有紧跟'd'的字符  

6、字符串和正则配合。

  (1)、search()配合正则

  实例:找出字符串中第一次出现数字的位置

<script> var str='asdf zxcvbnm'; //元字符\d,表示转义为数字 var re=https://www.jb51.net/\d/; alert(str.search(re)); //返回: 第一个数字为出现在第位 </script>

  (2)、match()配合正则

  其实没有什么东西是非正则不可的,只是正则可以让做东西更方便。下面就完成本章遗留的历史问题,怎么使用正则,能一句代码就完成普通方法需要很多行代码才能完成的东西。

  在实例之前,先看看match()与正则的配合。

<script> var str='asdf zxcvm'; //找出字符串中的数字可以使用元字符\d var re=https://www.jb51.net/\d/; //没告诉系统要找多少数字,系统在找到数字后就返回 alert(str.match(re)); //返回: //因此需要全局匹配,使用修饰符g var re=https://www.jb51.net/\d/g; //没告诉系统要找几位,系统会将所有找到的数字返回 alert(str.match(re)); //返回:,,,,,,,,,,,, //所以可以使用两个元字符,告诉系统要找的数字是位 var re=https://www.jb51.net/\d\d/g; //显然这样是不可取的,因为数字的位数并不固定,可能是位,有可能还是多位 alert(str.match(re)); //返回:,,,, //所以需要用到量词+,+代表若干,也就是多少都可以。 var re=https://www.jb51.net/\d+/g; //现在返回正确。 alert(str.match(re)); //返回:,,,, </script>

  实例:使用正则找出字符串中所有数字

<script> var str=' abc d aa c zz -=-=s-'; //alert(str.match(/\d+/g)); //元字符\d也可以使用[-]代替,到随便哪个都行。 alert(str.match(/[-]+/g)); //返回:,,,,,,, </script>

  正则是强大的字符串匹配工具,就这样简单的使用一句代码就完成了。

  (3)、replace()配合正则

<script> var str='abc zaaz deaxcaa'; //将字符串中的a替换为数字 alert(str.replace('a', )); //仅仅只将第一个a替换为 //配合正则使用匹配所有a再替换 var re=https://www.jb51.net/a/g; alert(str.replace(re, '')); //返回所有的a都为 </script>

  实例:简单的敏感词过滤

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgzgxw.html