`
q272156430
  • 浏览: 275813 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

javascript 正则

阅读更多

javascript中与正则表达式有关的匹配字符串的函数主要有RegExp类的方法exec(string)以及String类的方法match(regex),当然还有一些其他的方法,这里不作讨论,但是可能不少程序员都会混淆exec和match,这里列举二者的重点特性:

  1. exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串,如下所示:
    var re=new RegExp(/\d/);
    re.exec( "abc4def" );
    
     或者使用perl风格:
    /\d/.exec( "abc4def" );
    
     match才是字符串类提供的方法,它的参数是正则表达式对象,如下用法是正确的:
    "abc4def".match(\d);
    
  2. exec和match返回的都是数组

    如果执行exec方法的正则表达式没有分组(没有括号括起来的内容),那么如果有匹配,他将返回一个只有一个元素的数组,这个数组唯一的元素就是该正则表达式匹配的第一个串;如果没有匹配则返回null。

    下面两个alert函数弹出的信息是一样的:
    var str= "cat,hat" ;
    var p=/at/; //没有g属性
    alert(p.exec(str))
    alert(str.match(p))
    
     都是"at"。在这种场合下exec等价于match。

    但是如果正则表达式是全局匹配(g属性)的,那么以上代码结果不一样了:
    var str= "cat,hat" ;
    var p=/at/g; //注意g属性
    alert(p.exec(str))
    alert(str.match(p))
    
     分别是
    "at"
    "at,at"。

    因为exec永远只返回第一个匹配,而match在正则指定了g属性的时候,会返回所有匹配。
  3. exec如果找到了匹配,而且包含分组的话,返回的数组将包含多个元素,第一个元素是找到的匹配,之后的元素依次为该匹配中的第一、第二...个分组(反向引用)

    如下的代码将弹出"cat2,at":
    var str= "cat2,hat8" ;
    var p=/c(at)\d/;
    alert(p.exec(str))
    
     其中第一个元素是匹配的字符串"cat2",之后的元素是括号中匹配的"at"。

match函数在满足如下条件下将越俎代庖,实现和exec一样的功能:

1、正则表达式中含有分组(括号)
2、返回唯一的匹配

且看如下的代码:

var str= "cat2,hat8" ;
var p=/c(at)\d/;
alert(p.exec(str))
alert(str.match(p))

 都将弹出消息"cat2,at",是不是觉得很奇怪呢?

以下链接提供了一些演示:http://www.webchat.com.cn/exec_match.htm

现在我们再来回顾文章开头提出的问题:

var someText= "web2.0 .net2.0" ;
var pattern=/(\w+)(\d)\.(\d)/g;
var outCome_exec=pattern.exec(someText);
var outCome_matc=someText.match(pattern);

 

分析:

outCome_exec的值:pattern中的g属性对exec函数是没有任何作用的,因此exec将匹配第一个可以匹配的字串“web2.0”,作为其返回数组的第一个元素,另外由于pattern中包含三个分组((\w+)、(\d)、(\d)),因此该数组还将包含三个元素,依次是“web”、“2”、“0”,所以该exec执行后的最终结果是:["web2.0","web","2","0"]

outCome_matc的值:由于pattern是全局匹配的,因此match匹配了所有可以匹配的字串,因此结果数组的值outCome_matc为["web2.0","net2.0"]。如果pattern没有g属性,那么它将与outCome_exec结果一样,因为符合本文第4小节所描述的条件:有分组且返回唯一匹配!

总结:

match是返回所有匹配的字符串合成的数组,但是正则表达式必须指定全局g属性才能返回所有匹配,不指定g属性则会返回一个只有一个元素的数组。

exec永远返回与第一个匹配相关的信息,其返回数组包括第一个匹配的字串,所有分组的反向引用。

-------------------------------------------

某些情况下exec返回的结果和match返回的结果一样:

var str= "cat,hat" ;
var p=/at/; //没有g属性
alert(p.exec(str))
alert(str.match(p))

都弹出“at”

-------------------------------------------

某些情况下match返回的结果和exec返回的结果一样:

var str= "cat2,hat8" ;
var p=/c(at)\d/;
alert(p.exec(str))
alert(str.match(p))

都弹出“cat2,at”

 

分享到:
评论

相关推荐

    javascript正则表达式迷你书 (1).pdf

    JavaScript 正则表达式迷你书 本书是 JavaScript 正则表达式的入门级教程,旨在帮助读者快速掌握正则表达式的基本概念和应用。下面是本书的知识点摘要: 第一章:正则表达式字符匹配攻略 * 两种模糊匹配:横向...

    JavaScript正则表达式迷你书

    《JavaScript正则表达式迷你书》是一本关于JavaScript正则表达式的专业书籍,正则表达式是处理字符串的强大工具,广泛应用于编程语言中的文本处理。本书从字符匹配、位置匹配、括号的作用、回溯法原理、拆分、构建和...

    Javascript正则表达式教程

    ### JavaScript正则表达式教程详解 #### 一、正则表达式概述 正则表达式是一种强大的工具,用于处理文本中的模式匹配与替换。它由一系列普通字符和特殊字符(元字符)组成,用于定义一组规则,从而识别并操作符合...

    javascript正则表达式全解析文档

    ### JavaScript正则表达式全解析 #### 正则表达式的定义与使用 在JavaScript中,正则表达式是一种用于处理字符串的强大工具。它允许我们执行复杂的字符串搜索和替换操作。正则表达式对象可以通过两种方式创建:一...

    javascript正则表达式详解 (chm)

    javascript正则表达式详解 (chm)

    javascript正则表达式综合练习

    JavaScript正则表达式是编程语言中的一个重要组成部分,用于处理文本模式匹配和字符串操作。这篇博客“javascript正则表达式综合练习”可能是一个实践教程或示例集合,旨在帮助开发者提升在JavaScript中使用正则...

    javascript正则表达式学习笔记

    这篇学习笔记将深入探讨JavaScript正则表达式的概念、语法和实际应用。 一、正则表达式基础 1. 创建正则表达式: - 字面量表示法:`/pattern/flags` - 构造函数:`new RegExp('pattern', 'flags')` 2. 常见的...

    JavaScript正则表达式迷你书(1.1版)_程序逻辑_

    **JavaScript正则表达式迷你书(1.1版)** 正则表达式是JavaScript中一个强大的工具,用于处理文本字符串,进行模式匹配和查找、替换等操作。它们在编程逻辑中扮演着至关重要的角色,尤其是在处理字符串数据时,...

    JavaScript正则表达式.ppt

    了解正则表达式概念 掌握正则表达式的语法 熟练掌握正则表达式在JavaScript中的应用

    javascript正则表达式模糊匹配IP地址功能示例.docx

    本文主要介绍了javascript正则表达式模糊匹配IP地址的功能示例,结合简洁实例形式演示了JS模糊匹配IP地址的实现方法,涉及针对数字及字符串的相关正则判定与匹配操作技巧。 一、javascript正则表达式模糊匹配IP地址...

    JavaScript正则表达式使用详解.zip

    JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理文本字符串,执行模式匹配和字符串操作。在JavaScript中,正则表达式被广泛应用于数据验证、搜索与替换以及提取字符串中的特定信息等多个...

    精通 JavaScript正则表达式

    JavaScript中的正则表达式是一种强大的文本处理工具,用于在字符串中执行模式匹配和搜索操作。它们在数据验证、文本替换和提取子字符串等任务中扮演着核心角色。 首先,正则表达式允许我们测试字符串是否符合特定...

    JavaScript正则表达式匹配 div style标签_.docx

    JavaScript正则表达式匹配div style标签 本文主要介绍了JavaScript正则表达式匹配div style标签的相关知识点。通过对给定的测试字符串进行分析,我们可以了解到 JavaScript 正则表达式在匹配 div style 标签时的...

    javaScript 正则表达式详解

    JavaScript 正则表达式详解 JavaScript 中的正则表达式是指使用特殊字符来描述字符串模式的表达式。正则表达式可以用来匹配、检索和操作字符串。 RegExp 对象 在 JavaScript 中,正则表达式可以被定义为一个 ...

    javascript正则表达式表单验证大全

    ### JavaScript正则表达式在表单验证中的应用详解 在Web开发中,表单验证是确保数据质量和用户体验的重要环节。JavaScript正则表达式提供了一种强大的工具,用于前端数据校验,确保用户输入的数据格式正确无误。...

    JavaScript正则获取地址栏中参数的方法

    JavaScript正则获取地址栏中参数的方法主要阐述了如何通过正则表达式在JavaScript中获取URL地址栏参数值的技巧。这一方法在Web开发中十分实用,尤其是在处理动态地址时,我们经常需要获取某些特定的查询参数值。通过...

Global site tag (gtag.js) - Google Analytics