JavaScript 正则表达式进阶

本文介绍了JavaScript中的正则表达式使用方法,包括定义方式、常用标志及两种主要方法:exec()用于捕获匹配组,test()判断字符串是否符合模式。

    在JS中,正则表达式事实上是一个对象,称之为RegExp类型,风格很类似于Perl。

    常见的定义办法,也称为字面量形式,就是:

   

var reg=/pattern/flags

 

   其中flags可以是多种选项的组合,这些选项包括:

     i-- 不区分大小写(case--insentive),即在确定匹配项的时候不区分大小写

    g-- 表示全局模式(global),即模式被应用于所有的字符串

    m-- 表示多行模式(multiline) ,即在达到一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项

 

    另外一种方式就是利用RegExp构造函数。它接受两个参数,第一个参数表示模式,而第二个参数表示可选项(就是i,g,m),例如:

   

var reg=/.at/i  //以不区分大小写的形式匹配以at结尾的长度为3的字符串
//等效于
var reg=new RegExp("\.at","i");

 

    正则表达式对象RegExp主要有以下两个方法:

    第一个方法:exec  这个方法专门用来捕获匹配组的,它接受一个String类型的参数,返回匹配项的数组,如果没有匹配项则返回null。返回的数组虽然是Array的实例,但它具有额外的两个属性:index和input,其中index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串。例如:

   

var text="mom and dad and baby";
var pattern=/mom( and dad( and baby)?)?/;
var matches=pattern.exec(text);
alert(matches.index);//输出0
alert(matches.input);//输出mom and dad and baby
alert(matches[0]);//输出mom and dad and baby	
alert(matches[1]);//输出and dad and baby
alert(matches[2]);//输出and baby

 

    这个匹配组的方式在Python中,也有用到。例如:

   

import re;
m=re.match("mom( and dad( and baby)?)?", "mom and dad and baby");
print m.groups();#输出and dad and baby和and baby
print m.group();#输出mom and dad and baby

   简单的介绍下,group()返回所有匹配对象,groups()则简单,它返回一个包含唯一或所有子组的元组。 

 

    第二个方法:test(),它接受一个字符串参数。在模式与该参数匹配的情况下返回True,否则返回False。这个方法只关注模式是否与字符串匹配,至于为什么不匹配,就无关紧要了。例如:

   

var pattern=/\d{3}-\d{2}-\d{3}/;
var str="000-00-000";
if(pattern.test(str)){
   alert("The pattern was not matched");
}

  

转载于:https://www.cnblogs.com/bestchenwu/archive/2011/06/12/9655435.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值