js中的正则表达式入门(大量实例代码)

接下来我会详细讲解“js中的正则表达式入门(大量实例代码)”的攻略。

什么是正则表达式?

正则表达式是一种用于匹配字符串的模式,是一种强大而灵活的工具。它们由普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)组成。举个例子,用正则表达式来匹配邮箱中的@符号:

/@/

这个正则表达式表示匹配字符串中的@符号。

正则表达式语法

正则表达式语法十分丰富,可以匹配几乎所有的字符串模式。

字符匹配

  • 普通字符:匹配自身字符。例如,正则表达式/abc/表示匹配字符串中的"abc"。

  • 元字符(元字符前面需要加上反斜杠):

  • .:匹配任意单个字符。例如,表达式/a./可以匹配"ab"、"ax"、"ao"等。

  • \d:匹配数字0-9。例如,表达式/\d+/可以匹配"123"、"4567"等。

  • \w:匹配字母、数字和下划线。例如,表达式/\w/可以匹配"a"、"b"、"1"、"_"等。

预定义字符集

预定义字符集是一些已经定义好的字符集。

  • \s:匹配任意空白字符,包括空格、制表符、换行符等。例如,表达式/\s/可以匹配" "、"\t"、"\n"等。

  • \w:匹配任何字母数字字符,包括下划线。例如,表达式/\w/可以匹配"a"、"b"、"1"、"_"等。

  • \d:匹配任何数字字符。例如,表达式/\d/可以匹配"1"、"2"、"3"等。

量词

量词表示匹配次数。

  • +:匹配1次或多次。例如,表达式/a+/可以匹配"aaa"、"abca"、"a"等。

  • *:匹配0次或多次。例如,表达式/a*/可以匹配""、"a"、"aa"等。

  • ?:匹配0次或1次。例如,表达式/a?b/可以匹配"b"、"ab"等。

  • {n}:匹配n次。例如,表达式/a{3}/可以匹配"aaa",但不能匹配"aa"或"a"。

  • {n,}:匹配n次或更多次。例如,表达式/a{3,}/可以匹配"aaa"、"aaaa"等。

  • {n,m}:匹配n到m次。例如,表达式/a{3,5}/可以匹配"aaa"、"aaaa"、"aaaaa",但不能匹配"aa"或"a"。

分组和引用

分组可以将正则表达式中的多个字符作为一个单独的单元进行匹配。

  • 捕获分组:用括号将想要匹配的字符括起来。例如,表达式/(\w+)/可以匹配任何一个单词。

  • 零宽断言:零宽断言不占用字符,例如提供前缀或后缀匹配。例如,表达式/\bw\w+\b(?<!wet)/可以匹配以w开头、不是以wet结尾的单词。

示例代码

接下来,我会提供两个示例代码,来说明正则表达式的用处:

示例1

需求:判断一个字符串是否是合法的email地址。

function isEmail(str) {
  var pattern = /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+$/;
  return pattern.test(str);
}

这个正则表达式包含了多个部分,我们来逐步分析:

  • ^:匹配字符串的开始位置。
  • ([a-zA-Z0-9._-])+:匹配一个或多个由字母、数字、点、下划线、中划线组成的字符串。
  • @:匹配一个@符号。
  • ([a-zA-Z0-9_-])+:匹配一个或多个由字母、数字、中划线、下划线组成的字符串。
  • (\.[a-zA-Z0-9_-]+)+:匹配一个或多个由点和字母、数字、中划线、下划线组成的字符串。
  • $:匹配字符串的结束位置。

这个正则表达式通过匹配email地址的常见格式,进行email地址验证。

示例2

需求:将html字符串中的所有img标签的src属性值提取出来。

var html = '<img src="1.jpg"><img src="2.jpg">';
var pattern = /<img\s+src=['"](.*?)['"]/gi;
var match;
while ((match = pattern.exec(html)) !== null) {
  console.log(match[1]);
}

这个正则表达式也包含了多个部分:

  • <img:匹配"<img"字符串。
  • \s+:匹配一个或多个空格字符。
  • src=:匹配"src="字符串。
  • ['"]:匹配单引号或双引号。
  • (.*?):匹配任意字符,但尽可能少的匹配。
  • ['"]:再次匹配单引号或双引号。

通过这个正则表达式,我们可以把一个html字符串中的所有img标签的src属性值提取出来。

结语

到这里,我们就讲解了js中的正则表达式入门(大量实例代码),通过以上内容应该能使大家对正则表达式有一个较为全面的认识,然后在日常开发中就能更自如地运用正则表达式了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中的正则表达式入门(大量实例代码) - Python技术站

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

相关文章

  • 在nodejs中使用swagger方式

    在Node.js中使用Swagger,可以方便地管理API文档和服务器端点。下面是在Node.js中使用Swagger的完整攻略: 安装swagger-ui-express和swagger-jsdoc依赖: 使用npm安装依赖: npm install swagger-ui-express swagger-jsdoc 在需要使用Swagger的Node.js…

    node js 2023年6月8日
    00
  • 利用Node.js检测端口是否被占用的方法

    当我们要在Node.js中搭建服务时,常常会遇到端口被占用的问题,比如在调试时想要使用某个端口,但是发现该端口已被占用,这时我们就需要知道如何检测端口是否被占用。下面我将给出一个检测端口是否被占用的方法的攻略。 方法一:利用net模块检测 Node.js的内置模块net提供了一个API,可以用来检测端口是否被占用,具体代码如下所示: const net = …

    node js 2023年6月8日
    00
  • 基于node的cli工具开发使用详解

    基于node的cli工具开发使用详解 什么是CLI工具 CLI指的是命令行界面,是与计算机进行交互的一种方式。CLI工具通常是指在命令行界面下运行的程序,可以执行一些简单的任务,比如新建文件夹、复制文件等等。CLI工具具有操作简便、灵活高效等特点,可以方便程序员进行开发工作。 CLI工具的开发流程 CLI工具的开发需要以下步骤: 安装nodejs环境和npm…

    node js 2023年6月8日
    00
  • javascript getElementsByClassName实现代码

    JavaScript的getElementsByClassName方法可以根据给定的类名获取页面中所有对应的元素。下面是基本的实现代码示例: const elements = document.getElementsByClassName(‘example-class’); 其中,example-class为所需获取元素的类名,elements为获取到的所有…

    node js 2023年6月8日
    00
  • 用npm-run实现自动化任务的方法示例

    使用npm-run可以在package.json文件中定义自动化任务,方便开发者执行常用操作,例如编译代码、运行测试等。下面是通过npm-run实现自动化任务的方法示例: 1. 在package.json中定义自动化任务 在package.json文件中添加”scripts”属性,使用该属性定义自动化任务的名称和命令。例如: { "name&quo…

    node js 2023年6月8日
    00
  • Node.js之网络通讯模块实现浅析

    Node.js之网络通讯模块实现浅析 简介 Node.js是基于V8引擎的JavaScript运行环境,它具有事件驱动、异步I/O等特点,使其成为一个非常适合构建高性能网络应用程序的工具。Node.js提供了许多用于处理网络通讯的模块,本文将对其中的几个模块进行浅析,介绍它们的用途和实现方法。 net模块 net模块是Node.js中用于处理TCP网络通讯的…

    node js 2023年6月8日
    00
  • Ajax 高级功能之ajax向服务器发送数据

    下面我将为您详细讲解“Ajax 高级功能之ajax向服务器发送数据”的完整攻略。 什么是 Ajax? Ajax(Asynchronous Javascript And XML)是一种浏览器与服务器交互的技术,主要用于局部刷新页面,避免页面全局刷新,提升用户体验,同时也能够实现异步数据加载和前后端分离的技术需求。 Ajax向服务器发送数据的原理 在 Ajax …

    node js 2023年6月8日
    00
  • node.js中debug模块的简单介绍与使用

    node.js中debug模块的简单介绍与使用 简介 Debug是Node.js的一个核心模块,用于提供调试支持。它提供了一种比console.log()更方便的打印调试信息的方式,并支持控制调试输出级别。 安装 Debug模块是Node.js的核心模块,无需安装。 使用 先在js文件中引入debug模块: const debug = require(‘de…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部