`
XTU_xiaoxin
  • 浏览: 239649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【前端学习】javascript正则表达式和字符串RegExp and String(一)

阅读更多

csdn博客地址: http://blog.csdn.net/xtu_xiaoxin/article/details/48810583

 

前言

正则表达式是javascript非常重要和常用的功能,在jquery等大型框架中用的非常频繁,最近抽时间学习了解了相关知识,记录下来与需要的朋友分享。

思维导图

这里写图片描述

RegExp(正则表达式)的创建方式

可以通过两种方式创建一个RegExp,具体如下:

  1. 通过/…./的方式来创建正则表达式(注意: /……/两边是没有单引号或双引号的)
  2. 通过RegExp构造方法来创建一正则表达式

为了更好的描述模式,正则表达式提供了3个标识,分别是: g/i/m

  • g: 全局匹配:在整个字符串中匹配,而不是在第一次匹配后之后停止
  • i: 忽略大小写匹配
  • m: 对多行字符串中的每一行,应用行首和行末的特殊字符(分别是^和$)

具体看参照下面代码加深理解:


var regx = new RegExp('are','g');
var regx1 = /are/g;      //常用的创建方式

RegExp实例的主要属性

根据RegExp的构造函数,我们大概也能猜到RegExp的主要属性,关于实例属性,了解下就可以了。但有一点要注意:这些实例属性是不能通过for in进行遍历获取的。 可参照下面代码加深理解:

var regx1 = /are/g; //常用的创建方式
console.log("source:"+regx.source +" global:"+regx.global+" ignoreCase:"+regx.ignoreCase +" multiline:"+regx.multiline);
// source:are global:true ignoreCase:false multiline:false

for(var p in regx) { //不会进入该for循环
 if(regx.hasOwnProperty(p)) {
  console.log(regx[p]);
 }
}

 

RegExp实例的主要方法 - test

根据该方法非常简单,只有一个参数,常用来验证输入的参数与正则表达式模式是否匹配,如果匹配返回true,否则返回false. 可参照下面代码加深理解:

var regx1 = /are/g;
var res = regx.test('you are a good boy!');
console.log(res) ; //true
var res1 = regx.test('I am a good boy!');
 console.log(res1) ; //false

 

RegExp实例的主要方法 - exec

法该方法是一个非常常用的方法,需要好好理解。它只接收一个参数,即要匹配的字符串,返回值却是一个数组arr,数组里存储的是第一个匹配项的相关信息,包括:

  • input: 要匹配的字符串,exec方法的输入值
  • index:匹配性在字符串中的位置
  • arr[0]: 模式匹配的字符串
  • arr[1]…arr[n]: 第n个捕获组字符串

使用该方法时要注意:如果在正则表达式中未指定全局标志g,则每次执行始终返回的都是第一个匹配项,如果设置了全局标志g,每次调用exec,则会在字符串中继续查找新匹配项
可参照下面代码加深理解:

var regx = /fn:(\w+)\s+ln:(\w+)\s/g;
 var s ="your fn:xiaoxin ln:tang right?";
 var result = regx.exec(s);
 console.log(result.input); //your fn:xiaoxin ln:tang right?
 console.log(result.index); //5
 console.log(result[0]); //fn:xiaoxin ln:tang
 console.log(result[1]); //xiaoxin
 console.log(result[2]); //tang
  console.log(result[3]); //undefined  因为只有2个捕获组,所以打印undefined

 

RegExp构造函数属性

关于函数属性,可以参照其它编程语言(如java)中类的静态属性来理解,这些属性被所有的RegExp实例共享,也就是所有的RegExp都可以访问和修改这些属性,当某个实例执行test或exec方法时,这些属性的值也将跟着发生变化
关于这些属性,我们可以按照自己的理解记忆:

  • input : 需要进行模式匹配的字符串,test或exec方法的输入参数。 参数别名: $-
  • lastMatch : 最近一次匹配项 。 参数别名:$&
  • leftContext : 匹配项左边的字符串。参数别名:$`
  • rightContext : 匹配项右边的字符串 。 参数别名:$’

当然这些值,完全可以通过RegExp实例执行exec返回的结果计算得到,那为什么要在构造函数RegExp中设置这些属性呢?*
可参照下面代码加深理解:

var regx = /fn:(\w+)\s+ln:(\w+)\s/g;
var s ="your fn:xiaoxin ln:tang right?";
var result = regx.exec(s);
console.log(RegExp.input); //your fn:xiaoxin ln:tang right?
console.log(RegExp.lastMatch); //fn:xiaoxin ln:tang
console.log(RegExp.leftContext); //your
console.log(RegExp.rightContext); //right?
console.log(RegExp.$1); //xiaoxin
console.log(RegExp.$2); //tang

 

RegExp - 元字符

与其它语言中的正则表达式类似, js正则表达式中也存在一些元字符,这些字符有特殊的用途和含义,所以在使用的过程中,需要对这些字符进行转义,通过在这些字符前加上’\’ 进行转义处理. JS正则表达是的元字符有:

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

RegExp - 贪婪匹配和懒惰匹配

贪婪匹配就是在正则表达式的匹配过程中,默认会使得匹配长度越大越好。在JS正则表达式中,懒惰限定符是 ‘?’ ,在模式中添加 ‘?’ 则要求是懒惰匹配。具体参照下面代码来理解:

var s = 'I am a good boy,you are also a good boy !';
var regx = /good.*boy/g; //贪婪匹配
console.log(regx.exec(s)[0]); //good boy,you are also a good boy

var regx1 = /good.*?boy/g; //懒惰匹配
console.log(regx1.exec(s)[0]); //good boy

 

参照文章

http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    javascript正则表达式和字符串RegExp and String(一).docx

    ### JavaScript 正则表达式和字符串RegExp and String详解 #### 前言 正则表达式作为 JavaScript 中一种特别重要且常用的功能,在诸如 jQuery 等大型框架中使用得非常频繁。本文旨在深入探讨 JavaScript 中正则...

    javascript正则表达式和字符串RegExp and String(二).docx

    在 JavaScript 中,字符串和正则表达式是非常重要的概念,它们经常被用来处理文本数据。本文将详细介绍 JavaScript 中字符串的创建、特性以及一些常用的 API 方法,并探讨正则表达式的应用。 #### 字符串的创建方式...

    javascript正则表达式和字符串RegExp and String(二)

    在上篇文章给大家介绍了javascript正则表达式和字符串RegExp and String(一),本文给大家继续分享相关内容。 前言 我认为,在学习一门编程语言的过程中,字符串、数组、容器是非常重要的部分,为了提高编程效率,...

    javascript正则表达式和字符串RegExp and String(一)

    在JavaScript编程语言中,正则表达式是一种强大的文本匹配工具,用于匹配字符串中的字符组合。正则表达式(RegExp)和字符串操作是开发过程中不可或缺的部分,它们在处理文本数据、验证用户输入、搜索和替换文本等...

    Java使用正则表达式提取XML节点内容的方法示例

    正则表达式是指一个模式串,它由一些特殊的符号和字符组成,用于描述一个字符串的模式。Java中提供了对正则表达式的支持,使得开发者可以使用正则表达式来匹配和提取字符串中的内容。 二、XML节点内容提取方法 在...

    javaScript 正则表达式详解

    JavaScript 正则表达式详解 JavaScript 中的正则表达式是指使用特殊字符来描述字符串模式的表达式。...JavaScript 中的正则表达式提供了强大的字符串匹配和操作能力,广泛应用于字符串处理和数据验证等领域。

    JavaScript利用正则表达式替换字符串中的内容

    在JavaScript中,正则表达式是一种强大的工具,用于处理字符串,包括查找、匹配、替换等操作。本篇文章将深入探讨如何使用正则表达式来替换字符串中的内容。 首先,我们来看一个基本的替换示例。在JavaScript中,...

    JS正则表达式获取字符串中特定字符的方法

    在JavaScript中,正则表达式是一种强大且灵活的文本处理工具,它可以用来搜索、匹配和操作字符串。本文将介绍如何使用正则表达式结合replace方法的回调函数功能来获取字符串中特定字符。这一技能在处理字符串数据时...

    JavaScript正则表达式工具

    总的来说,这个JavaScript正则表达式工具结合了JavaScript的正则表达式功能和MooTools库,提供了一个友好的交互环境,让用户能够轻松学习和测试正则表达式。通过使用这个工具,开发者可以更高效地编写和调试涉及正则...

    使用正则表达式的模式匹配

    JavaScript的`String`和`RegExp`类提供了多个方法来利用正则表达式: 1. **String.prototype.match()**:返回字符串中与正则表达式匹配的所有结果。 2. **String.prototype.search()**:返回匹配项的索引位置,如果...

    JavaScript RegExp 正则表达式对象详细说明

    JavaScript中的RegExp对象是用于处理正则表达式的内置对象,它提供了强大的字符串模式匹配功能。正则表达式(Regular Expression)是一种特殊的字符序列,用于在文本中查找、替换或提取符合特定模式的字符串。 直接...

    正则表达式.txt,正则表达式.txt

    正则表达式(Regular Expression),简称“regex”或“regexp”,是一种在文本中查找字符串的强大工具。它由一系列字符和特殊符号组成,用于匹配一组符合特定规则的字符串。通过正则表达式,用户可以轻松地实现字符...

    JavaScript手册及正则表达式详解[收藏]

    正则表达式则是JavaScript中的一个重要工具,用于处理字符串的模式匹配和查找。在这个“JavaScript手册及正则表达式详解”中,我们将深入探讨这两个关键主题。 一、JavaScript基础 JavaScript是一种解释型、弱类型...

    常用java正则表达式

    接着,定义了一个名为`SocialSecurityNumberValidator`的类,在主方法中使用`Pattern.compile`编译正则表达式,并使用`matcher.matches`来检查字符串是否与给定的模式匹配。 通过上述知识点的学习,读者可以了解到...

    正则表达式大全 正则表达式 模式匹配 Javascript

    正则表达式(Regular Expression)是一种模式匹配工具,在文本处理领域有着广泛的应用,尤其是在JavaScript等编程语言中,用于字符串搜索、替换以及提取等功能。本文将详细介绍一系列常用的正则表达式及其应用场景,...

    Javascript经典正则表达式

    `String.replace()`方法用于在字符串中用一些字符替换另一些字符,或者替换一个与正则表达式匹配的子串。其基本语法为`replace(regex, newSubStr)`。 1. **参数说明**: - `regex`:可以是字符串或正则表达式,...

Global site tag (gtag.js) - Google Analytics