javascript中的正则表达式学习

一、前言

  关于正则表达式自身的语法这里不做过多介绍(详情可参见http://www.php100.com/manual/unze.html),这里仅仅解释javascript中和正则表达式相关的几个方法的使用。

二、javascript中的RegExp对象

  在javascript中,有两种方法可以构建正则:

    正则表达式字面量

    RegExp构造器

  RegExp对象有以下属性:

    global:如果标识g,则为true

    ignoreCase:如果标识i被使用,则为true

    lastIndex:下一次exec匹配开始的索引,初始值为0

    multiline:如果标识m被使用,则为true

    source:正则表达式源文本

三、正则表达式中的特殊需转义的字符

  在正则表达式字面量中,如果希望下面的字符按照字面进行匹配:

    /  \  [  ]  (  )  {  }  ?  +  *  |  .  ^  $

  必须要用一个\前缀进行转义。如果拿不准的话,可以个任何特殊字符都添加一个\前缀使其字面化。注意\前缀不能使字母或数字字面化。

四、javascript中可以操作正则表达式的相关方法

  在javascript中,可以处理正则表达式的方法有:

    regexp.exec

    regexp.test

    string.match

    string.replace

    string.search

    string.split

  下面重点介绍一下上述方法的用法:

  1.regexp.exec(string)

  exec方法是使用正则表达式的最强大(和最慢)的方法。如果它成功的匹配了string,会返回一个数组,数组中下标为0的元素将包含正则表达式regexp匹配的子字符串,下标1的元素是分组1捕获的文本...依次类推,除了数组元素和length属性外,exec还返回两个属性,index声明的是匹配文本的第一个字符的位置,input属性则存放的是被检索的字符串。如果匹配失败,会返回null。在调用非全局的regexp对象的exec方法时,返回的数组与调用方法string.match返回的数组是相同的。

  如果exep带有一个g表示,事情会变得负责,查找不是从这个字符的起始位置开始,而是从regexp.lastIndex(初始值为0)位置开始。如果匹配成功,那么regexp.lastIndex将被设置为该匹配后第一个字符的位置。这就意味着可以反复调用exec()来获得字符串中所有匹配文本,当再也找不到匹配的文本时,它将返回null,并会重置regexp.lastIndex为0.

  这就允许通过循环调用exec去查询一个匹配模式在一个字符串中发生了几次,有两件事需要注意。1.如果提前退出了循环,在此进入循环前必须把regexp.lastIndex重置为0;2.^因子仅匹配regexp.lastIndex为0的情况。

  具体可参见下面的案例:

var str=‘visit bobo bobo‘;
var patt=/bobo/g;
var result;
console.log(‘带有g标示的循环调用‘);
while((result=patt.exec(str))!=null){
    console.log(result);//第一次输出["bobo", index: 6, input: "visit bobo bobo"],第二次循环输出["bobo", index: 11, input: "visit bobo bobo"]
    //下一个匹配位置
    console.log(patt.lastIndex);//第一次输出10,第二次输出15
    //匹配文本的第一个位置

}

console.log(‘非手动退出循环时regexp.lastIndex的值‘);
console.log(patt.lastIndex);//输出0

console.log(‘不带g标示的exec‘);
var patt1=/bobo/;
var result1=patt1.exec(str);
console.log(patt1.lastIndex);//不带g标识的时候,每一次exec执行完毕,lastIndex都重置为0
console.log(result1);//["bobo", index: 6, input: "visit bobo bobo"]

  2.regexp.test(string)

  test方法是使用正则表达式最简单(和最快)的方法,如果匹配返回true,否则返回false。

r.test(string)等同于r.exec(string)!=null.不要对这个方法运用g标识。

  3.string.match(regexp)

  match方法让一个字符串和一个正则表达式进行匹配。它一句g标识来决定如何进行匹配。

  如果没有g标识,那么调用string.match(regexp)的结果与调用r.exec(string)的结果相同。仅仅执行一次匹配,如果没有找到任何匹配的文本,就返回null。否则返回一个数组,数组的第0个是匹配的文本,下标为1对应着捕获组1捕获的文本,...以此类推。此外,结果还具有index和input属性。分别表示匹配开始的下标和输入的文本。

  如果带有g表示,那么它执行全局检索,生成一个包含所有匹配(除捕获分组之外)的数组;若没有找到任何匹配的元素则返回null。全局匹配返回数组的内容与前者大不相同,数组中存放的是string的所有匹配子串,也没有index属性和input属性。

  在全局检索模式下,match即不提供子表达式匹配的文本的信息,也不声明匹配的位置,如果需要这些信息,可以使用regexp.exec()

  

时间: 2024-10-17 21:09:45

javascript中的正则表达式学习的相关文章

JavaScript中的正则表达式(终结篇)

JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScript中的使用: JavaScript对正则表达式的支持程度 支持正则表达式的RegExp类型 RegExp的实例属性 RegExp的实例方法 RegExp的构造函数属性 简单的应用 第一部分:JavaScript对正则表达式的支持程度 之前我介绍了正则表达式的基本语法,如果大家不是很了解可以先看下面

C++、Java、JavaScript中的正则表达式

编程思想之正则表达式 什么是正则表达式? 正则表达式(Regular Expression)就是用某种模式去匹配一类字符串的公式.如你要在一篇文章中查找第一个字是"罗"最后一个字是"浩"的三个字的姓名,即"罗*浩":那么"罗*浩"就是公式,也称作模式(Pattern),这篇文章就是要匹配的串(或叫文本text).再如,你要检查输入的一个字符串是否是126邮箱的格式,你得制定一个规则去查检,这种规则就是正则表达式. 从入门开始

JavaScript中使用正则表达式

      正则表达式又叫正规表示法,是一种表达文本模式的方法.通常是使用单个字符串来描述,匹配一系列符合某个规则的字符串.正则表达式是对字符串进行操作并且返回结果的一种工作方式,很多程序设计语言都对其进行了设计,而在JavaScript中对正则表达式的实现是基于perl的语法规则进行构建的.记得教我编程的老师说过“道士的驱魔符,医生的处方单,程序员的正则表达式”称为三个行业奇迹,表示非行业内的人很难弄懂到底是什么意思.其实正则表达式还是很容易入门的,但是要精通的话还是需要话一些时间的. 现在有

JavaScript中的正则表达式(下)

在JavaScript中的正则表达式介绍了JavaScript中正则表达式的语法,本文同样是JavaScript权威指南的笔记,介绍JavaScript中正则表达式的一些方法. 用于模式匹配的String方法 search()方法 参数是一个正则表达式,返回第一个与之匹配的字串的起始位置,如果找不到匹配的字串,它将返回-1.比如:'JavaScript'.search(/script/i) 返回4. 同时,search方法不支持全局搜索,因为它会忽略正则表达式中的修饰符g. replace()方

javaScript中有关正则表达式的用法总结

js中处理正则表达式的类:RegExp 用法: var reg=new RegExp("express"); 或者: var reg=/express/; js中常用的6个方法: test():是否存在 exec():返回查询值 match():得到查询的数组 search():返回搜索的位置 replace():替换 split():分割成数组 这些方法,里面的参数都是正则表达式. js中常用的4大类: 简单类.负向类.组合类.范围类. 简单类:/[123]qqqq/gi:表示开头必

(译)JavaScript 中的正则表达式(RegEx)实操——快速掌握正则表达式,伴有随手可练的例子————(翻译未完待续)

(原文:https://blog.bitsrc.io/a-beginners-guide-to-regular-expressions-regex-in-javascript-9c58feb27eb4) 当你第一次看到正则,它们就像随意堆放的字符,看起来毫无意义.不过尽管他们看起来很棘手(因为复杂的语法规则),他们却极其有用. 事实是,正确地理解了正则表达式,能让你成为一个更加高明的程序员.为了完全了解正则表达式的世界,你需要先学习一些基本概念,在此基础上才能有所作为. 废话不多说,让我们开始吧

javascript中的正则表达式

javascript中采用RegExp对象表示正则表达式. 而RegExp对象一共有3个方法, 他们分别是: 1.compile 2.exec 3.test 那么这三个方法到底是怎么用的呢? 首先,compile没有什么用,它只能在多次正则匹配的时候提高些许效率,先不去考虑. 下面说说exec,它返回找到的指定的值,这个值在字符串中的位置,以及整个字符串.如果找不到,返回null. 1 var pattern = new RegExp('man', 'g'); 2 var str1 = "i a

【前端学习笔记】Javascript中的正则表达式

复习字符串操作-------------------------– indexOf 查找字符 返回位置 charAt 查找位置 返回字符 substring 获取字符窜 split 分割字符串 正则表达式的概念和写法----------------- 正则 :也叫做规则,让计算机能够读懂人类的规则 正则都是操作字符串的. 正则的写法: var re = /a/; 和数组字符串区分开来 var re = newRegExp('a'); [正则默认] : 1.正则中是区分大小写的 不区分大小写在正则

【Jsp】Jqueryajax技术在Jsp中的应用与javascript中的正则表达式

ajax不是一门新语言,只是一个很平常的即时响应技术,非常简单,一点都不玄虚,就像数据库技术一样能够运用至php,asp.net,asp与jsp等各大网页之中,与网页有着很好的融合性 ajax务必运行在服务器中,因为ajax是一项服务器技术,所以使用ajax在本地的两个未被挂载到服务器上的网页之间,传递数值是不可能的,尽管jquery是本身并不需要挂载到服务器上使用 那么ajax到底是什么呢? 传统的表单的提交有时会带给用户不良的体验, 比如以下的例子: 在jqueryajax.jsp下,有着如