教你轻松记住JS正则表达式

yizhihongxing

下面是 “教你轻松记住JS正则表达式” 的完整攻略。

一、正则表达式

正则表达式是一种可以用于匹配文本特定模式的表达式,也可称之为正则或RegExp。JavaScript 支持正则表达式,其构造函数即RegExp。

1.1 正则表达式的构造函数

在 JavaScript 中 RegExp 是正则表达式的构造函数,我们可以使用它创建正则表达式,语法如下:

var regExp = new RegExp(pattern, flags);

其中 pattern 为正则表达式的模式,flags 为修饰符(可选),修饰符可以去掉或添加某些功能。

示例:

var regExp1 = new RegExp('hello');
var regExp2 = new RegExp('hello', 'i');

以上代码创建了两个正则表达式,分别匹配字符串中的 "hello",但 regExp2 使用 'i' 修饰符表示匹配不区分大小写。

1.2 正则表达式的字面量

除了使用 RegExp 构造函数,JavaScript 还提供了一种简单的字面量(literal)形式来创建正则表达式。字面量创建正则表达式的形式为:/pattern/flags

示例:

var regExp3 = /hello/;
var regExp4 = /hello/i;

以上代码同样创建了两个正则表达式,分别匹配字符串中的 "hello",但 regExp4 使用 'i' 修饰符表示匹配不区分大小写。

二、正则表达式的元字符

正则表达式中的元字符指的是有特殊含义的字符,能够通过它们来构造规则。下面列出一些常用的元字符及其含义:

  • .:匹配除了换行符以外的任何字符。
  • \d:匹配数字,相当于 [0-9]
  • \D:匹配非数字,相当于 [^0-9]
  • \w:匹配单词字符(字母、数字、下划线),相当于 [A-Za-z0-9_]
  • \W:匹配非单词字符,相当于 [^A-Za-z0-9_]
  • \s:匹配空白字符,包括空格、制表符、换页符等。
  • \S:匹配非空白字符。
  • ^:匹配开头,表示以某个字符或某种类型字符开头。
  • $:匹配结尾,表示以某个字符或某种类型字符结尾。

示例:

var str = 'I love JavaScript.';
var regExp5 = /I/;
var regExp6 = /script\./i;
var regExp7 = /\d+/;
var regExp8 = /\W/;

以上代码分别创建了四个正则表达式:regExp5 匹配以 "I" 开头的字符串,regExp6 匹配以 "script." 结尾的字符串("." 在正则表达式中需要转义),regExp7 匹配字符串中的数字,regExp8 匹配非单词字符。

三、正则表达式的修饰符

上文提到过,正则表达式的修饰符可以去掉或添加某些功能。下面列出一些常用的修饰符:

  • g:全文查找,即找到所有匹配项。
  • i:忽略大小写。
  • m:多行匹配。

示例:

var str1 = 'HeLLo worLD.';
var regExp9 = /l/;
var regExp10 = /l/g;
var regExp11 = /l/i;

以上代码分别创建了三个正则表达式:regExp9 匹配第一个字符 "l",regExp10 匹配所有的字符 "l",regExp11 匹配不区分大小写的字符 "l"。

四、正则表达式的使用

正则表达式可以应用于多种场景中的文本匹配,例如验证手机号、邮箱、密码、身份证号等。在 JavaScript 中,我们通常使用正则表达式配合 String 类型的方法进行文本匹配。

4.1 test() 方法

test() 方法用于检测字符串中是否存在指定的模式,并返回 truefalse

语法:regExp.test(string)

示例:

var regExp12 = /\d+/;
regExp12.test('12345'); // true
regExp12.test('abc'); // false

以上代码使用 test() 方法检测字符串中是否存在数字,返回结果分别为 truefalse

4.2 exec() 方法

exec() 方法用于在字符串中执行正则表达式搜索,返回包含结果的数组或 null

语法:regExp.exec(string)

示例:

var regExp13 = /(\d+)-(\d+)-(\d+)/g;
var str2 = '2019-9-10, 2019-9-15';
var result = [];
var temp;
while((temp = regExp13.exec(str2)) != null) {
    result.push(temp[0]);  // 注意数组下标
}
console.log(result);  // ["2019-9-10", "2019-9-15"]

以上代码使用 exec() 方法以全局匹配的方式获取日期字符串中的年月日信息。

五、正则表达式的捕获分组

在正则表达式的模式中,我们还可以指定捕获分组,用于抽取我们所需的信息。捕获分组的格式是 "()",其中可以嵌套括号,同一正则表达式中可以有多个捕获分组。

示例:

var regExp14 = /(\d{4})-(\d{2})-(\d{2})/;
var str3 = '2019-09-15';
var match = regExp14.exec(str3);
console.log(match); // ["2019-09-15", "2019", "09", "15", index: 0, input: "2019-09-15", groups: undefined]
console.log(match[1]); // "2019"
console.log(match[2]); // "09"
console.log(match[3]); // "15"

以上代码通过捕获分组将日期字符串中的年、月、日信息分别提取出来。

六、编写正则表达式要注意的细节

编写正则表达式时需要注意以下几点:

  • 将正则表达式封装在函数中,以便重复调用。
  • 使用 test() 方法判断基本的匹配情况。
  • 尽可能使用字面量形式的正则表达式。
  • 使用捕获分组获取所需的信息。
  • 正则匹配的顺序很重要,应该将最精确的规则放在最前面。

七、总结

本文从正则表达式的构造函数、正则表达式的元字符、正则表达式的修饰符、正则表达式的使用、正则表达式的捕获分组以及编写正则表达式要注意的细节等方面分别进行了详细讲解,并给出了多个示例。掌握了上述知识点,相信读者已能够在 JavaScript 中运用正则表达式轻松地实现各种文本匹配操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:教你轻松记住JS正则表达式 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript中检测数据类型的四种方法总结

    当我们书写JavaScript程序时,时常需要对不同的变量进行类型的检测。因为JavaScript中的变量是弱类型的,而且变量的类型也随时可以改变,所以正确地进行类型检测是非常重要的。接下来,我们将介绍JavaScript中检测数据类型的四种方法总结。 方法一:使用typeof操作符 JavaScript提供了一个typeof操作符,可以用来检测一个变量的类…

    JavaScript 2023年6月10日
    00
  • 整理Javascript流程控制语句学习笔记

    下面为你详细讲解“整理Javascript流程控制语句学习笔记”的完整攻略。 攻略概述 本攻略旨在帮助读者更好地理解和掌握Javascript中的流程控制语句,涵盖以下内容: 分类介绍Javascript中的流程控制语句。 详细讲解Javascript中每种流程控制语句的用法、语法和示例。 给出实际例子,帮助读者理解流程控制语句的应用场景。 提供学习Java…

    JavaScript 2023年5月27日
    00
  • JavaScript编程中实现对象封装特性的实例讲解

    实现对象封装特性是JavaScript编程中的一个关键技能,它可以提高代码的可维护性和可读性,同时还可以提高代码的安全性和灵活性。下面是一个完整的实现对象封装特性的攻略,包含了两个示例说明。 一、对象的封装特性 对象的封装特性是JavaScript编程中的一个重要特性,它可以将属性和方法封装到对象中,防止外部直接访问和修改这些数据。这种方式可以提高代码的安全…

    JavaScript 2023年6月10日
    00
  • JavaScript setTimeout()基本用法有哪些

    JavaScript setTimeout()基本用法 setTimeout()是JavaScript中的一个内置函数,它可以在指定的时间间隔后执行一段代码。在JavaScript中,setTimeout()函数的用法非常广泛,常用于网页中的动画效果、延迟执行代码等。 setTimeout()函数的语法 setTimeout()函数的语法如下: setTim…

    JavaScript 2023年6月11日
    00
  • json数据的列循环示例

    下面是关于json数据的列循环示例的完整攻略,包含两条示例说明。 JSON数据的列循环示例 什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于一个子集的JavaScript编程语言,易于读取和编写。 JSON格式是失效的,意味着基于所有现代编程语言的解析器都可以读取和解析JSON数据格式。…

    JavaScript 2023年5月27日
    00
  • uniapp跨页面传值uni.$emit和uni.$on的使用及踩坑实战

    uniapp 跨页面传值:uni.$emit 和 uni.$on 的使用 在一个完整的 uniapp 应用程序中,存在着多个页面组成的应用。有时候我们需要在不同的页面之间传递数据,这时候就要用到 uniapp 提供的跨页面传值方式 —— uni.$emit 和 uni.$on。 1. uni.$emit 和 uni.$on 概述 uni.$emit 和 un…

    JavaScript 2023年6月11日
    00
  • Javascript闭包与函数柯里化浅析

    JavaScript 闭包与函数柯里化是 JavaScript 中非常重要且常见的概念,对于想要成为一名 JavaScript 开发工程师来说是必不可少的。下面将分别详细讲解闭包和函数柯里化的概念和原理,并提供两个示例来说明它们的用法和效果。 JavaScript 闭包 闭包是通过函数访问其被定义时的词法作用域(决定变量作用域的范围)的能力。简单来说,闭包就…

    JavaScript 2023年6月10日
    00
  • JavaScript高级程序设计(第3版)学习笔记10 再访js对象

    JavaScript高级程序设计(第3版)学习笔记10 再访js对象攻略: 什么是JS对象 JS对象是可变的键控集合,它们的(键)对应的值可以是函数、数组、基本类型值或其他对象。对象在JavaScript中的作用非常广泛,JavaScript是一门基于对象的编程语言,它支持面向对象的编程方式。 构造函数 构造函数是创建特定类型对象的一种特殊函数,它充当初始化…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部