JavaScript中正则表达式判断匹配规则及常用方法

JavaScript中正则表达式判断匹配规则及常用方法

正则表达式是一种强大的文本匹配工具,可以用于查找、替换和验证字符串。JavaScript中的正则表达式使用RegExp对象来创建和操作。

创建正则表达式

在JavaScript中,可以使用字面量或构造函数来创建正则表达式。

字面量创建

字面量使用斜杠(/)将正则表达式括起来,后接标志(可选)。例如:

let pattern = /abc/; //创建一个匹配'abc'的正则表达式

构造函数创建

构造函数接收2个参数,第1个是正则表达式字符串,第2个是标志字符串。例如:

let pattern = new RegExp('abc'); //创建一个匹配'abc'的正则表达式

正则表达式标志

正则表达式标志是指影响正则表达式匹配行为的字符,通常包括以下3个:

  • g(全局匹配):查找所有匹配项,而非在找到第1个匹配项时停止。
  • i(忽略大小写):大小写不区分。
  • m(多行匹配):启用多行模式, "^" 和 "$" 将匹配每行的开头和结尾。

这些标志可以单独使用,组合使用,也可以不使用。例如:

let pattern = /abc/gi; //创建一个全局、忽略大小写的正则表达式,用于匹配'abc'

正则表达式方法

RegExp对象提供了以下一些方法来操作正则表达式。

test()

test()方法用于测试字符串是否匹配正则表达式。返回值为true或false。例如:

let pattern = /abc/i;
console.log(pattern.test('Abc')); //true
console.log(pattern.test('def')); //false

exec()

exec()方法用于在字符串中匹配正则表达式。返回一个数组,该数组包含匹配的首个子串及匹配的分组(如果有的话)。如果没有匹配到,则返回null。例如:

let pattern = /([0-9]+)-([0-9]+)-([0-9]+)/;
let date = '2021-10-31';
let match = pattern.exec(date);
console.log(match); //[ '2021-10-31', '2021', '10', '31', index: 0, input: '2021-10-31', groups: undefined ]

match数组包含整个匹配项和捕获到的分组, match[0]为整个匹配项,match[1]为第1个分组,以此类推。

常用正则表达式语法

以下是一些常用的正则表达式语法:

字符类

字符类用于匹配一个字符的集合:

  • [abc]:匹配a、b或c中的任意1个字符。
  • [a-z]:匹配a到z中的任意1个字符。
  • [^abc]:匹配不是a、b或c中的任意1个字符。
  • [^a-z]:匹配不是a到z中的任意1个字符。

例如:

let pattern = /a[bcd]e/i;
console.log(pattern.test('abcde')); //true
console.log(pattern.test('abe')); //false

量词

量词用于指定模式出现的次数:

  • +:匹配1个或多个。
  • *:匹配零个或多个。
  • ?:匹配零个或1个。
  • {n}:匹配n个。
  • {n,m}:匹配n到m个。
  • {n,}:匹配n个或多个。

例如:

let pattern = /[0-9]+/g;
console.log('hello 123 world 456'.match(pattern)); // [ '123', '456' ]

边界

边界用于匹配字符串的边缘:

  • ^:匹配行的开头。
  • $:匹配行的结尾。
  • \b:匹配单词边界。
  • \B:匹配非单词边界。

例如:

let pattern = /^a/g;
console.log(pattern.test('abc')); //true
console.log(pattern.test('bbc')); //false

分组和引用

分组用于将一组字符当作整体进行匹配:

  • ():将括号内的字符当作一组。
  • \n:引用第n个分组。

例如:

let pattern = /(\d{3})-(\d{3,8})/;
let phone = '010-12345678';
let match = pattern.exec(phone);
console.log(match); // [ '010-12345678', '010', '12345678', index: 0, input: '010-12345678', groups: undefined ]

这里用括号将区号和电话号码分别分组,并通过引用分组号码来获取这两个部分。

总结

本文详细讲解了JavaScript中正则表达式判断匹配规则及常用方法。了解正则表达式的基本语法及用法,可以帮助我们更方便、高效地操控字符串。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中正则表达式判断匹配规则及常用方法 - Python技术站

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

相关文章

  • JS实现匀速与减速缓慢运动的动画效果封装示例

    下面我将详细讲解如何实现 JS 实现匀速与减速缓慢运动的动画效果封装。 1. 匀速缓动动画 步骤如下: 获取元素的起始位置和目标位置 计算元素移动的距离和移动的总时间 每个时间间隔移动元素的距离 将元素移动到目标位置 示例代码: /** * @param {HTMLElement} el * @param {number} target * @param {…

    JavaScript 2023年6月10日
    00
  • JavaScript字符串包含问题

    JavaScript字符串包含问题是指在一个字符串中,查找是否包含另一个字符串的问题。通常使用indexOf()或includes()方法来解决该问题。 使用indexOf()方法 indexOf()方法返回字符串中指定字符或字符串第一次出现的位置。返回值为-1表示未找到。可以通过以下方式使用它来判断一个字符串是否包含另一个字符串: let str = ‘h…

    JavaScript 2023年5月28日
    00
  • JS简单获取日期相差天数的方法

    下面是”JS简单获取日期相差天数的方法”的完整攻略。 标题 步骤1:获取两个日期并计算它们之间的毫秒数 首先,我们需要获取两个日期,并计算它们之间的毫秒数。代码如下: const date1 = new Date("2021-03-01") const date2 = new Date("2021-03-05") co…

    JavaScript 2023年5月27日
    00
  • React 条件渲染最佳实践小结(7种)

    React 条件渲染是一个非常常见的操作,在React中也有很多种实现方法。以下就是7种React条件渲染的最佳实践。 1. if…else 第一种方法就是使用if…else实现条件渲染。示例如下: render() { if (someCondition) { return <div>Some JSX</div>; } el…

    JavaScript 2023年6月11日
    00
  • window.event快达到全浏览器支持了,以后使用就方便了

    首先需要认识到 window.event 是在IE浏览器中出现的一个全局事件对象,通过该对象可以获取当前页面中发生的事件的信息,例如事件类型、事件目标、事件源等。而其他浏览器中并没有实现此对象,因此在跨浏览器开发时,我们需要统一处理事件对象的获取方法。 随着前端技术的发展,现在在大多数浏览器中都添加了对 window.event 的支持,但在某些移动端浏览器…

    JavaScript 2023年6月10日
    00
  • javaScript知识点总结(必看篇)

    首先感谢您对JavaScript知识的关注。以下是我对”javaScript知识点总结(必看篇)”的完整讲解: 1. 前言 在这篇知识点总结中,作者主要归纳了JavaScript中的核心概念和它们的实际应用。主要包括以下几个方面: 变量和数据类型 操作符和表达式 流程控制语句 函数和作用域 数组和对象 正则表达式 异步编程和Promise ES6新特性 2.…

    JavaScript 2023年5月17日
    00
  • Vue-Router基础学习笔记(小结)

    下面是针对“Vue-Router基础学习笔记(小结)”的完整攻略: Vue-Router基础学习笔记(小结) 什么是Vue-Router Vue-Router是Vue.js的路由管理库,专门提供路由功能实现SPA(Single Page Application, 单页应用)。它去掉了传统的同步方式,采用异步加载组件,一定程度上提高了web应用的速度和流畅度。…

    JavaScript 2023年6月11日
    00
  • 不唐突的JavaScript的七条准则整理收集

    针对“不唐突的JavaScript的七条准则整理收集”的完整攻略,我将按照以下步骤进行讲解: 简介 准则一:使用模块化编程 准则二:避免使用全局变量 准则三:显式声明变量类型 准则四:封装重用的代码 准则五:使用 API 和库 准则六:舍弃 eval() 函数 准则七:使用立即执行函数表达式 示例说明 总结 1. 简介 该攻略旨在探讨如何写出不唐突的 Jav…

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