正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中,正则表达式也是对象。
这些模式被用于 RegExp 的 exec 和 test 方法,以及 String 的 match、matchAll、replace、search 和 split 方法

1.RegExp

以下三种表达式都会创建相同的正则表达式:

/ab+c/i; //字面量形式
new RegExp('ab+c', 'i'); // 首个参数为字符串模式的构造函数
new RegExp(/ab+c/, 'i'); // 首个参数为常规字面量的构造函数

1.1 RegExp.prototype.exec()

exec() 方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。

const regex1 = RegExp('foo*', 'g');
const str1 = 'table football, foosball';
let array1;while ((array1 = regex1.exec(str1)) !== null) {console.log(`Found ${array1[0]}. Next starts at ${regex1.lastIndex}.`);// expected output: "Found foo. Next starts at 9."// expected output: "Found foo. Next starts at 19."
}

如果匹配失败,exec() 方法返回 null,并将正则表达式的 lastIndex 重置为 0。
如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的 lastIndex 属性。完全匹配成功的文本将作为返回数组的第一项,从第二项起,后续每项都对应一个匹配的捕获组。数组还具有以下额外的属性:

1.2 RegExp.prototype.test()

test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。

const str = 'table football';const regex = new RegExp('foo*');
const globalRegex = new RegExp('foo*', 'g');console.log(regex.test(str));
// expected output: trueconsole.log(globalRegex.lastIndex);
// expected output: 0console.log(globalRegex.test(str));
// expected output: trueconsole.log(globalRegex.lastIndex);
// expected output: 9console.log(globalRegex.test(str));
// expected output: false

如果正则表达式设置了全局标志,test() 的执行会改变正则表达式 lastIndex属性。连续的执行test()方法,后续的执行将会从 lastIndex 处开始匹配字符串,(exec() 同样改变正则本身的 lastIndex 属性值).

2.String使用正则的函数

2.1 match

match() 方法检索返回一个字符串匹配正则表达式的结果。

const paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
const regex = /[A-Z]/g;
const found = paragraph.match(regex);console.log(found);
// expected output: Array ["T", "I"]

2.2 search

search() 方法执行正则表达式和 String 对象之间的一个搜索匹配。

const paragraph = 'The quick brown fox jumps over the lazy dog. If the dog barked, was it really lazy?';// any character that is not a word character or whitespace
const regex = /[^\w\s]/g;console.log(paragraph.search(regex));
// expected output: 43console.log(paragraph[paragraph.search(regex)]);
// expected output: "."

2.3 replace

replace() 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。如果pattern是字符串,则仅替换第一个匹配项。

原字符串不会改变。

const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';console.log(p.replace('dog', 'monkey'));
// expected output: "The quick brown fox jumps over the lazy monkey. If the dog reacted, was it really lazy?"const regex = /Dog/i;
console.log(p.replace(regex, 'ferret'));
// expected output: "The quick brown fox jumps over the lazy ferret. If the dog reacted, was it really lazy?"

2.4 split

split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。

javaScript中正则表达式的使用相关推荐

  1. 详解Javascript中正则表达式的使用

    章节目录 Javascript中正则表达式的使用 String.prototype.search方法 String.prototype.replace方法 String.prototype.split ...

  2. javascript中正则表达式的基础语法

    前面的话 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为 ...

  3. javascript中正则表达式和ruby中的一点差异

    看到一个例子,不过这个例子中正则表达式的格式貌似是错的: Function.prototype.get_name = function(){return this.name || this.toStr ...

  4. 【RegExp】JavaScript中正则表达式判断匹配规则以及常用方法

    字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符 ...

  5. Javascript中正则表达式的全局匹配模式

    先看一道JavaScript题目,据说是国内某知名互联网企业的JavaScript笔试题,如果对正则的全局匹配模式不了解的话可能会对下面的输出结果感到疑惑. View Code var str = & ...

  6. JavaScript中正则表达式学习笔记

    一.正则表达式是什么: 处理字符串时,经常需要处理复杂规则的字符串.正则表达式就是用于描述这些规则的工具.换句话说,就是记录文本规则的代码. 二.正则表达式能做什么: 数据有效性验证(测试字符串匹配) ...

  7. JavaScript中正则表达式详解

    正则表达式的介绍 * 正则表达式也叫规则表达式[Regular Expression],是按照一定的规则组成的一个表达式,主要作用是用来匹配字符串的* 正则表达式可以在大多数编程语言中使用* 正则表达 ...

  8. JavaScript中正则表达式学习(一)

    2019独角兽企业重金招聘Python工程师标准>>> 1.判断是不是手机号码(实际判断是不是11位数字,可以用\d来匹配数字) 表单部分代码: <form name=&quo ...

  9. JavaScript中的正则表达式详解

    正则表达式(Regular Expression)是一门简单语言的语法规范,是强大.便捷.高效的文本处理工具,它应用在一些方法中,对字符串中的信息实现查找.替换和提取操作. 正则表达式在人们的印象中可 ...

最新文章

  1. 利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理
  2. 沈向洋博士:三十年科研路,我踩过的那些坑
  3. Firefox Quantum 向左,Google Chrome 向右
  4. 计算机培训开场语,辅导班家长会主持词开场白
  5. Java学习资源整理(超级全面),java基础面试笔试题
  6. mysql事务隔离级别与具体实例
  7. wordpress如何让百度快速收录_百度搜狗蜘蛛池让你的新网站内页快速收录
  8. 苹果iPhone手机怎么恢复备份?详细iOS备份怎么恢复教程
  9. 微信群控的服务器怎么用,微信群控开发SDK使用教程--手机客户端返回聊天消息的原始内容给服务端...
  10. SUS铝合金复合金属的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  11. 【触动精灵】开发手册学习整理(一)
  12. 理想L9/路特斯Eletre /高合HiPHi Z首发,谁能捅破智能豪华天花板?
  13. 基于Vue的日程排班表 - common-schedule
  14. STM32F10x单片机Flash写操作导致中断不响应问题
  15. 2018年美亚杯电子数据取证大赛-资格赛wp
  16. Indesign多媒体富交互插件【MagBuilder】与iOS app 【MagViewer】介绍
  17. 第一篇博客:Delphi中修改ODBC数据源
  18. 批量重命名文件 - Renamer JAVA File
  19. 【Android】如何实现App的快捷方式的创建、添加与管理呢?
  20. 迪文屏幕T5UID3平台学习笔记四:串口使用和定时器使用

热门文章

  1. java的swing和awt_java的SWING与AWT的区别
  2. win10 以 十六进制 形式(方式) 查看文件 内容
  3. html网页中表格的各种应用
  4. 运动健身食谱APP--学习大作业设计指导性项目
  5. 985 研究生组团诈骗,一个中招就关 App
  6. PHP采集器querylist
  7. 很傻计算机的英语,用英语表达笨蛋,除了Stupid,还有其他的表达
  8. 企业办公入门之选 用ThinkCentre E95更划算!
  9. 更改office365Excel导入外部数据默认使用power query
  10. BOI Day1 nautilus 题解