首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JavaScript正则表达式的惯用方法总结

2012-08-01 
JavaScript正则表达式的常用方法总结在介绍正则表达式语法之前先学习下面几个方法:正则表达式方法:test(),

JavaScript正则表达式的常用方法总结

        在介绍正则表达式语法之前先学习下面几个方法:
        正则表达式方法:test(), exec()
        String对象方法:match(), search(), replace(), split()

        test()方法:
        用法:regexp对象实例.test(字符串)
        返回值:如果满足regexp对象实例中定的正则规则,返回true,否则返回false

        exec()方法:
        用法:regexp对象实例.exec(字符串)
        返回值:如果 exec 方法没有找到匹配,则它返回 null。如果它找到匹配,则 exec 方法返回一个数组,并且更新全局 RegExp 对象的属性,以反映匹配结果。数组的0元素包含了完整的匹配,而第1到n元素中包含的是匹配中出现的任意一个子匹配。这相当于没有设置全局标志 (g) 的 match 方法。
        如果为正则表达式设置了全局标志,exec 从以 lastIndex 的值指示的位置开始查找。如果没有设置全局标志,exec 忽略 lastIndex 的值,从字符串的起始位置开始搜索。

        这里需要备注下:上面返回值这段话关于返回数组让我迷惑了好久,因为试验下来返回的都是一个长度的数组,也就是只有一个元素.查了网上很多资料都没有相关的介绍.翻开上次买的"javascript 高级程序设计"一书,在P168有介绍(所谓反向引用,以后介绍)
        另外,关于"更新全局 RegExp 对象的属性"我是这样理解的:更新RegExp对象的index和lastIndex属性,在设置了全文匹配参数后可以试验,每次匹配从上一个lastIndex开始搜索.(可以结合下面的属性和后面的例子来体会)

        属性,分别是 input、index 和 lastIndex。Input 属性包含了整个被查找的字符串。Index 属性中包含了整个被查找字符串中被匹配的子字符串的位置。LastIndex 属性中包含了匹配中最后一个字符的下一个位置。

        match()方法:
        用法:string对象.match(regexp对象)
        返回值:如果 match 方法没有找到匹配,返回 null。如果找到匹配返回一个数组并且更新全局 RegExp 对象的属性以反映匹配结果。
       备注:match和exec一个很明显的差别是设置了全文搜索参数g后它返回的数组不再是一个元素,而是所有的元素,第一个匹配结果数组基数为0,第二个为1,以此类推.
       属性:同exec,match也有index,lastIndex,input三个属性,意义也同exec
       exec和match差别比较的例子:
 



        上面代码的运行:

        search()方法:
        用法:string对象.search(regexp对象)
        返回值:search 方法指明是否存在相应的匹配。如果找到一个匹配,search 方法将返回一个整数值,指明这个匹配距离字符串开始的偏移位置。如果没有找到匹配,则返回 -1.
        注意:返回的只是与正则表达式查找内容匹配的第一个子字符串的位置.所以用全局搜索参数就没有意义了.

        replace()方法:
        用法:string对象.replace(regexp对象|字符串,"替换的字符串")
        返回值:如果设置了全文搜索,则全部满足的都将被替换;否则只替换第一个.返回替换后的字符串.
        注意:replace中还可以接受字符串,但只替换第一个满足条件的字符串.

        split()方法:
       用法:string对象.split([分割符(可以是字符串或正则表达式[,限制输出数组个数]])
       返回值:返回string对象被分割的数组
       注意:string对象不会被split方法修改。分割符是可选项,可以是字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组.最后一个选项限制输出数组个数也是可选项,该值用来限制返回数组中的元素个数。
        另外,split本身就带有全文匹配的特性,所以可用可不用g参数
        从上面分析也可以看出一点:正则表达式比字符串替换功能强大.下面的例子也可以看出.











相关链接:
正则表达式语法
常用JS验证函数总结

热点排行