JS的正则表达式

最近研究了下正则表达式,试着把学到的内容整理出来,希望对其它在学习的人有帮助。

在JS中,和正则表达式的使用有关的两个对象,分别是:RegExp和String

RegExp对应的方法是 test() 和  exec()

String对应的方法是 search(),replace(),match(),split()

首先介绍一下RegExp对象方法的用法

\/d\g.test("a1b2c3d4"); //全局搜索 ,每执行一次lastIndex的位置会改变,当找不到相应的值时返回false

例子:

<script>
var letit =  /\d/g;

document.write("<p>"+letit.test("a1b2c3d4")+" lastIndex :"+letit.lastIndex+"</p>");

document.write("<p>"+letit.test("a1b2c3d4")+" lastIndex :"+letit.lastIndex+"</p>");

document.write("<p>"+letit.test("a1b2c3d4")+" lastIndex :"+letit.lastIndex+"</p>");

document.write("<p>"+letit.test("a1b2c3d4")+" lastIndex :"+letit.lastIndex+"</p>");

document.write("<p>"+letit.test("a1b2c3d4")+" lastIndex :"+letit.lastIndex+"</p>");
</script>

/[a-z](\d)/.exec("a1b2c3d4");// 这个方法会返回找到对应值的字符和想要分组(括号)的字符;

最典型的例子是获取时间对应的数字:

/(\d)(\d)(\:)(\d)(\d)(\:)(\d)(\d)/.exec(new Date());

输入内容为:

Sat Jan 20 2018 13:32:55 GMT+0800 (中国标准时间) //随便选定了个时间

获得的内容是:

"13:32:55", "1", "3", ":", "3", "2", ":", "5", "5"

接下来是String对象的方法

search方法会返回匹配的第一个字符的序号如 

"a1b2c3d4".search(/\d/);

会返回1 ,search不执行全局搜索

replace方法用法如下:

"a1b2c3d4".replace(/\d/g,'x') -----》 "axbxcxdx"

"2017-11-12".replace(/(\d{4})-(\d{2})-(\d{2})/,function(match,group1,group2,group3,index,origin){return group2+","+group3+","+group1});----->"11,12,2017"

match方法

在非全局模式下与exec方法类似,只不过调用对象调换了。

new Date().match(/(\d)(\d)(\:)(\d)(\d)(\:)(\d)(\d)/);

全局模式只返已经分组的子表达式,也不指明位置。

相关推荐