文档章节

JS与正则表达式相关的方法总结

静默行
 静默行
发布于 06/07 11:17
字数 1310
阅读 4
收藏 0
点赞 0
评论 0

regexp实例方法

exec()

  1. exec()是专门为捕获组设计的方法,exec接受一个参数,即需要应用正则的字符串,返回一个数组,或者没有匹配的时候返回null。注:/^/.exec(‘str’)返回一个数组,第一项为”。因为在’str’中在字符串开始的地方存在^,不算没有匹配。
  2. exec()返回的数组格式:[‘总匹配字符串’,捕获1,捕获2…,index,input],其中如果没有捕获组,数组中就没有捕获项,如果有捕获组,但是没有捕获到字符,则数组中对应的捕获项为undefined。这是一个Array的实例,但是有两个额外的属性:index 表示匹配项在字符串中的位置,而 input 表示应用正则表达式的字符串。

    注:可以给array添加属性,输出的格式如下:
    var a = new Array(1,2);
    a.input = 'a';
    console.log(a); //[ 1, 2, input: 'a' ]
    
  3. 对于 exec()方法而言,即使在模式中设置了全局标志g,它每次也只会返回一个匹配项。在不设置全局标志的情况下,在同一个字符串上多次调用 exec()将始终返回第一个匹配项的信息。而在设置全局标志的情况下,每次调用 exec()则都会在字符串中继续查找新匹配项,并且该正则表达式的lastindex属性会改变

    eg:
    var a = /w/g;
    
    var b = 'aawasdadwaaw';
    for(var i=0;i<3;i++){
        console.log(a.lastIndex);
        console.log(a.exec(b));
    
    }
    //0
    //[ 'w', index: 2, input: 'aawasdadwaaw' ]
    //3
    //[ 'w', index: 8, input: 'aawasdadwaaw' ]
    //9
    //[ 'w', index: 11, input: 'aawasdadwaaw' ]
    

test()

  1. test()接受一个字符串参数。在模式与该参数匹配的情况下返回 
    true;否则,返回 false。在只想知道目标字符串与某个模式是否匹配,但不需要知道其文本内容的 
    情况下,使用这个方法非常方便。因此,test()方法经常被用在 if 语句中,用法:

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

字符串的模式匹配方法

match()

  1. match函数在非全局情况与exec函数返回结果完全一致,只是match函数是String的实例方法,调用方法为’str’.match(regexp);
  2. match函数在全局模式下与exec函数返回结果不同,match会返回所有匹配项组成的一个数组,没有input和index属性,并且仅仅返回整个的匹配项,即忽略正则表达式中的捕获组。 
    eg: 
    var a = /(w)a/g;

    var b = 'aawasdadwaaw';
    for(var i=0;i<3;i++){
        console.log(a.lastIndex);
        console.log(b.match(a));
    
    }
    //0
    //[ 'wa', 'wa' ]
    //0
    //[ 'wa', 'wa' ]
    //0
    //[ 'wa', 'wa' ]
    

search()

  1. search接受一个正则表达式参数,返回字符串中第一个匹配项的索引,如果没有找到匹配项,返回-1,无论正则表达式是否设置了g标志,都会返回第一个匹配项的索引。

replace()

  1. replace是字符串替换方法,接受两个参数,匹配的正则表达式(或者一个字符串)和替换用的字符串。
  2. 如果第二个参数是字符串,可以在字符串中插入特殊的字符序列

    $$ $
    $& 匹配整个模式的子字符串(不是输入的字符串)。与RegExp.lastMatch的值相同
    $' 匹配的子字符串右边的内容。与RegExp.rightContext的值相同
    $` 匹配的子字符串左边的内容。与RegExp.leftContext的值相同
    $n 匹配第n个捕获组的子字符串,其中n等于0~9。例如,$1是匹配第一个捕获组的子字符串,$2是匹配第
    二个捕获组的子字符串,以此类推。如果正则表达式中没有定义捕获组,则使用空字符串
    $nn 匹配第nn个捕获组的子字符串,其中nn等于01~99。例如,$01是匹配第一个捕获组的子字符串,$02
    是匹配第二个捕获组的子字符串,以此类推。如果正则表达式中没有定义捕获组,则使用空字符串
    

    注:javascript高级程序设计第三版将$’与$`的用法写反了。

  3. 如果第二个参数是函数,在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递 3 个参数:模式的匹配项、模式匹配项在字符串中的位置和原始字符串。在正则表达式中定义了多个捕获组的情况下,传递给函数的参数依次是模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项……,但最后两个参数仍然分别是模式的匹配项在字符串中的位置和原始字符串。这个函数应该返回一个字符串,表示应该被替换的匹配项。

    在全局模式下,会一次次调用这个函数,直到这个字符串处理完成。
    

split()

  1. split方法也可以指定正则表达式,并且还可以设置第二个参数来指定返回的项数。 
    高程上的例子:

    var colorText = "red,blue,green,yellow";
    var colors1 = colorText.split(","); //["red", "blue", "green", "yellow"]
    var colors2 = colorText.split(",", 2); //["red", "blue"]
    var colors3 = colorText.split(/[^\,]+/); //["", ",", ",", ",", ""] 

© 著作权归作者所有

共有 人打赏支持
静默行
粉丝 1
博文 30
码字总数 14105
作品 0
武汉
程序员
JavaScript学习记录day9-标准对象

JavaScript学习记录day9-标准对象 [TOC] 在JavaScript的世界里,一切都是对象。 但是某些对象还是和其他对象不太一样。为了区分对象的类型,我们用操作符获取对象的类型,它总是返回一个字符...

ygqygq2
06/11
0
0
精通 JavaScript中的正则表达式

相关文章: JS正则表达式详解[收藏] Javascript正则表达式笔记 javascript基础知识大集锦(2) JavaScript精通 JS正则表达式 (精通?标题党 ) 正则表达式可以: •测试字符串的某个模式。例如,可...

闵开慧
2013/04/08
0
0
JavaWeb01-HTML篇笔记(七)

.1 案例三:完成对注册页面的数据的简单校验.1.1.1 需求: 对注册页面的数据进行非空的简单校验!!!如果有某个值没有输入,点击提交,弹出一个对话框进行提示!! 1.1.2 分析:1.1.2.1 技术分...

我是小谷粒
04/28
0
0
正则&highlight高亮实现(干货)

写完正则表达式以后在浏览器上检测实在是不方便,于是就写了一个JS正则小工具,大大地提高了学习效率。学习之余用正则实现了一个highlight高亮demo,欢迎交流。 什么是正则表达式? 简单的说:...

牧云云
2017/01/12
0
0
【99JS】之二:路径自动调整

 上一篇,99给大家介绍了使用js控制“:nth-child()”的方法,今天99继续给大家介绍一个使用js自动调整路径的相关介绍,希望大家喜欢。 目标: 路径自动调整 需求是这样的:在javascript 开发...

石佛慈悲
2014/01/03
0
0
爬虫获取 js 动态数据 (1)

爬虫遇到 js 动态数据时,主要解决方法有两种: 使用一些库,例如 Selenium,来模拟浏览器环境抓取数据。但这样做对内存和 CPU 的消耗都比较大,爬虫效率低,应尽量避免。 手动分析 js 请求,...

anye137
06/05
0
0
JavaScript的简单复习

JavaScript的简单复习 JS的两种加载方式: 1.内部加载 内部加载,写在<script>标签内部 2.外部加载 写在<script>的src目录中,使用外部加载js文件的时候,js解析引擎不解析script标签体中的代码...

Lunqi
2015/08/07
0
0
JavaScript中识别native方法

@2014-04-21 原文地址:http://yanni4night.com/blog/detecting-native-function-in-javascript.html Js中一些本地(native/built-in)对象和方法是可以重写的,比如在针对低版本浏览器的编程中...

yinyongcom666
2014/04/26
0
0
编写一个简单的JavaScript模板引擎

本文首发于我的知乎专栏,转发于掘金。若需要用于商业用途,请经本人同意。 尊重每一位认真写文章的前端大佬,文末给出了本人思路的参考文章。 前言 能够访问到这篇文章的同学,初衷是想知道...

凯斯
07/03
0
0
Javascript中的正则表达式

正则表达式提供了强大的字符串检索和操作的能力,这些能力在Javascript中有着比其他语言更广泛的应用。对于运行于浏览器环境中的Javascript,HTML文档的DOM操作和样式操作是其主要任务之一,...

con
2014/04/30
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)

在JVM中堆空间划分如下图所示 上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条 1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代 2.新生代可以划分为三个区,Eden区,两个幸...

嘻哈开发者
10分钟前
0
0
CentOS 7.4 设置系统字符编码

1.语言变量LANG在 /etc/locale 文件中。 2.可以通过/ect/profile 来修改LC_TYPE 变量的值 添加如下代码 export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 到profile文件中,变量的可以修改...

qimh
11分钟前
0
0
Kafka相关使用

安装前提,需要有jdk环境,还有zookeeper环境 zookeeper下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/ zookeeper安装参考:https://www.jianshu.com/p/f7037105db46 kafka的下......

朝如青丝暮成雪
12分钟前
0
0
CentOS7 解决无法使用tab自动补全 tab代码提示

一、前言 对于刚刚开始学习linux的新人来说,linux的一切都显着神秘,只能惊叹于大牛在Linux上行云流水的操作。今天介绍一下在linux中自动补全的功能。 对于新人来说,在不懂得技巧的情况下,...

ziluopao
18分钟前
0
0
redis安装

https://www.cnblogs.com/feijl/p/6879929.html

ghou-靠墙哭
18分钟前
0
0
Spring核心——注解自动装载

从配置上扩展 之前的文章介绍了Spring的IoC容器配置管理方面的详细内容,需要了解的可以从IoC容器的设计模式开始阅读。在介绍基于注解配置的配置之前我们再重复一下在之前提到的基本认识: ...

随风溜达的向日葵
22分钟前
1
0
ElasticSearch学习(8)—— SearchType

Elasticsearch有四种类型的SearchType 1、query and fetch 向索引的所有分片(shard)都发出查询请求,各分片返回的时候把元素文档(document)和计算后的排名信息一起返回。这种搜索方式是最...

叶枫啦啦
23分钟前
0
0
MYSQL备份工具-mysqldump

介绍 mysqldump 是文本备份还是二进制备份 它是文本备份,如果你打开备份文件你将看到所有的语句,可以用于重新创建表和对象。它也有 insert 语句来使用数据构成表。 语法 mysqldump 的语法是...

郭恩洲_OSC博客
25分钟前
0
0
我的第一个go web框架

使用了beego等go web开发框架之后,感觉各种不方便,尤其是在接收参数、和自定义输出的时候,各种难受,定义各种model,这不是找事情嘛??尤其是在角色权限控制的时候我也感觉力不从心。。。...

独坐苔痕但观罗敷
26分钟前
0
0
自动代码生成图形化工具

自动生成Spring代码 https://github.com/EliMirren/Spring-generator 自动生成Vertx https://gitee.com/duhua/vertx-generator...

奋斗的小牛
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部