一篇文章搞懂JavaScript正则表达式之方法

下面是“一篇文章搞懂JavaScript正则表达式之方法”的完整攻略:

什么是正则表达式

正则表达式(Regular Expression,regex,RegExp)是一种用来进行字符串匹配的工具。它通过一些特定字符的组合和描述规则来匹配文本中的字符序列。JavaScript 中使用正则表达式同样非常方便。

创建正则表达式

在 JavaScript 中,有两种常见的方式来创建正则表达式:

  1. 字面量方式

使用斜杠(/)包括正则表达式的模式,后面可以跟一些修饰符。例如:

let pattern = /hi/gi;

这个正则表达式的模式是“hi”,修饰符“gi”表示全局匹配和忽略大小写。

  1. 构造函数方式

使用 RegExp 对象来创建正则表达式,传入参数是正则表达式的模式和修饰符。例如:

let pattern = new RegExp("hi", "gi");

匹配字符串

要使用正则表达式对字符串进行匹配,可以使用 String 对象的 match() 方法。它会返回一个数组,数组的元素就是匹配到的结果。例如:

let pattern = /hi/gi;
let str = "Hi,How are you? hi";
let result = str.match(pattern);
console.log(result);

结果输出:["Hi", "hi"]

正则表达式元字符和特殊字符

正则表达式的基础是元字符和特殊字符。其中,元字符(也称为原义字符)代表了自身,特殊字符则有特殊含义,并不代表自身。下面列出一些常见的元字符和特殊字符:

字符 说明
. 匹配除了换行符以外的任意字符
\w 匹配任意字母、数字、下划线
\W 匹配除了字母、数字、下划线以外的任意字符
\d 匹配任意数字
\D 匹配除了数字以外的任意字符
\s 匹配任意空白字符(包括空格、制表符和换行符等)
\S 匹配除了空白字符以外的任意字符
^ 匹配字符串的开头
$ 匹配字符串的结尾
\b 匹配单词的边界
\B 匹配不在单词边界的位置

贪婪匹配和非贪婪匹配

在正则表达式中,*、+ 和 ? 这三个元字符都是贪婪匹配的,会尽可能多地匹配字符。如果想要改成非贪婪匹配,需要在这三个元字符后面加上 ?,例如:

let str = "aa<a>bb<a>cc";
console.log(str.match(/<.+?>/g));

结果输出:["<a>", "<a>"]

示例

例子一

假设有一个电话号码格式为 0517-88888888(其中 0517 代表区号,8 个数字表示电话号码),要从一段文本中提取出这样格式的电话号码,可以使用正则表达式。

let str = '这是我的电话号码:0517-88888888,请联系我!';
let pattern = /\d{4}-\d{8}/;
let result = str.match(pattern);
console.log(result);

结果输出:["0517-88888888"]

例子二

假设有一段文本,其中有多个人名,要从中根据一定的规则提取人名前的称呼,例如:

李小明先生、王小丽女士,您好!

可以使用正则表达式 /[\u4e00-\u9fa5]{2,4}(?=先生|女士)/g 来匹配。

其中 [\u4e00-\u9fa5] 匹配汉字,{2,4} 表示匹配两到四个汉字,(?=先生|女士) 表示仅当后面有“先生”或“女士”之一的时候才匹配。

let str = '李小明先生、王小丽女士,您好!';
let pattern = /[\u4e00-\u9fa5]{2,4}(?=先生|女士)/g;
let result = str.match(pattern);
console.log(result);

结果输出:["李小明", "王小丽"]

以上就是“一篇文章搞懂JavaScript正则表达式之方法”的完整攻略,希望可以帮助到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章搞懂JavaScript正则表达式之方法 - Python技术站

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

相关文章

  • .Net 单例模式(Singleton)

    单例模式(Singleton)概述 单例模式是设计模式中一种常见的创建型模式,其定义为:保证一个类仅有一个实例,并提供一个访问它的全局访问点。使用单例模式可以确保一个类只被创建一次,并且该类的唯一实例可以被进行全局访问和控制。 在 .Net 中,单例模式可以应用于许多场景,例如控制数据库连接、记录系统日志、全局配置信息等等。下面将介绍如何在 .Net 应用程…

    JavaScript 2023年5月28日
    00
  • 详解JS对象封装的常用方式

    关于JS对象封装的常用方式,我可以提供以下完整攻略。 一、什么是对象封装 对象封装是一种将数据和相应的方法捆绑在一起的面向对象编程技术,以实现数据封装和信息隐藏的目的,有助于提高代码的可读性、可维护性、可扩展性和代码复用性。 在JavaScript中,对象封装可以通过创建对象或构造函数等方式来实现。常用编写对象封装的方式有:对象字面量、构造函数、原型和ES6…

    JavaScript 2023年5月27日
    00
  • Javascript入门学习第四篇 js对象和数组第1/2页

    下面是针对“Javascript入门学习第四篇 js对象和数组第1/2页”的完整攻略: Javascript对象和数组入门 什么是对象 在Javascript中,对象(Object)是指一组属性和方法的集合。每个属性都是由键名和键值组成的,而方法则是一段特殊的函数。 对象可以用花括号括起来,其中每个属性或方法都用逗号隔开。例如: let person = {…

    JavaScript 2023年5月27日
    00
  • js实现文字闪烁特效的方法

    下面是JS实现文字闪烁特效的方法的完整攻略: 方法一:用CSS实现文字闪烁特效 1. 在CSS中设置不透明度为0和1的关键帧动画 @keyframes blink { 0% { opacity: 0; } 50% { opacity: 1; } 100% { opacity: 0; } } 2. 将带有文字的HTML元素定义为闪烁动画 .blink { an…

    JavaScript 2023年6月11日
    00
  • 浅谈js中字符和数组一些基本算法题

    下面我将为您详细讲解“浅谈js中字符和数组一些基本算法题”的完整攻略。 确定字符串中的唯一字符 题目描述 给定一个字符串,编写一个函数来确定它是否是该字符串的某个字符的排列之一。例如,输入“abc”和“cba”,你应该返回true,但是如果输入“abc”和“def”,则应按false。 解决方案 一个字符串是另一个字符串的排列之一,意味着它们都由相同的字符组…

    JavaScript 2023年5月28日
    00
  • JavaScript如何删除字符串中子字符串

    当我们想要删除字符串中的子字符串时,JavaScript提供了多种方案来实现。下面是一些方法和示例说明: 方法一:使用replace方法 JavaScript中的字符串有一个replace方法,可以方便地用来替换字符串中的内容。我们可以通过正则表达式在字符串中匹配需要删除的子字符串,并使用空字符串替换它,从而将它从字符串中删除。具体步骤如下: 1.定义一个字…

    JavaScript 2023年5月28日
    00
  • 微信小程序实现元素渐入渐出动画效果封装方法

    让我来详细讲解“微信小程序实现元素渐入渐出动画效果封装方法”的完整攻略吧。 1. 先做一些准备工作 在实现动画效果之前,我们需要在相应的页面中引入 wx.createAnimation() 方法,这个方法可以创建一个动画实例,供我们后续的动画操作使用。 方法如下: const animation = wx.createAnimation({ duration…

    JavaScript 2023年6月11日
    00
  • JavaScript深入理解作用域链与闭包详情

    JavaScript深入理解作用域链与闭包攻略 作用域链 在JavaScript中,作用域链是一种机制,它决定了变量和函数的访问权限。每个函数都有一个作用域链,它是由函数创建时所处的环境和所有父级环境的变量对象所组成。当函数执行时,它的作用域链会被用来解析变量和函数的引用。 示例一:作用域链的基本概念 var globalVar = ‘global’; fu…

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