百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

JavaScript 正则表达式详解大全

myzbx 2025-01-05 19:00 11 浏览

JavaScript中的正则表达式是一种强大的文本处理工具,它通过定义字符模式来匹配字符串中的特定部分。以下是关于JavaScript正则表达式的详细解释

1. 基本概念

  • 正则表达式(Regular Expression):用于描述字符模式的对象,用于在字符串中查找、替换或提取符合某种规则的子串。
  • 元字符(Metacharacters):在正则表达式中有特殊含义的字符,如.、*、+等。

2. 创建正则表达式

  • 字面量方式:使用斜杠包围表达式,如/pattern/flags,例如/hello/i表示忽略大小写匹配“hello”。
  • 构造函数方式:使用new RegExp()构造函数,如new RegExp("hello", "i")。
// 字面量方式
let regex1 = /hello/i;

// 构造函数方式
let regex2 = new RegExp("hello", "i");

3. 常用方法

  • **test()**:测试字符串是否满足正则表达式规则,返回布尔值。
  • **search()**:执行搜索匹配,返回第一个匹配项的索引位置,找不到返回-1。
  • **exec()**:在一个指定字符串中执行搜索匹配,返回一个结果数组或null。
  • **match()**:检索字符串并返回匹配的结果,可以与全局标志一起使用。
  • **replace()**:返回一个新字符串,其中的某些部分被替换为新的子字符串。
let str = "Hello, world!";
let regex = /hello/i;

// test()
console.log(regex.test(str)); // true

// search()
console.log(str.search(regex)); // 0

// exec()
console.log(regex.exec(str)); // ["Hello"]

// match()
console.log(str.match(regex)); // ["Hello"]

// replace()
console.log(str.replace(regex, "Hi")); // "Hi, world!"

4. 修饰符

  • g:global,全文搜索。
  • i:ignore case,忽略大小写。
  • m:multiple lines,多行搜索。
  • 其他标志符:如s(允许.匹配换行符)、u(使用Unicode码进行匹配)等。
let str = "Hello\nworld";
let regex = /hello/gi;
console.log(str.match(regex)); // ["Hello", "world"]

5. 断言与范围类

  • 正向肯定查找((?=...)):匹配前面的内容,同时要求后面的条件也成立。
  • 正向否定查找((?!...)):匹配前面的内容,但后面不能是指定的条件。
  • 反向肯定查找((?<=...)):匹配后面的内容,但前面的条件必须成立。
  • 反向否定查找((?<!...)):匹配后面的内容,但前面的条件不能成立。
let str = "foo123bar";
let regex = /(?<=foo)\d+/;
console.log(str.match(regex)); // ["123"]

6. 分组与引用

  • 分组:使用圆括号()将正则表达式的一部分括起来,形成分组。
  • 反向引用:在模式后面引用分组匹配的内容。
let str = "John Doe";
let regex = /(\w+)\s(\w+)/;
console.log(str.match(regex)); // ["John Doe", "John", "Doe"]

7. 示例与应用

校验数字

let numRegex = /^\d+$/;
console.log(numRegex.test("12345")); // true
console.log(numRegex.test("123a45")); // false

校验字符

let charRegex = /^[A-Za-z]+$/;
console.log(charRegex.test("HelloWorld")); // true
console.log(charRegex.test("Hello World")); // false

特殊需求

验证Email地址

let emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test("example@example.com")); // true
console.log(emailRegex.test("example@example")); // false

验证URL

let urlRegex = /^(https?:\/\/)?([a-zA-Z0-9.-]+)(:[0-9]+)?(\/.*)?$/;
console.log(urlRegex.test("http://www.example.com")); // true
console.log(urlRegex.test("https://example")); // false

验证身份证号(假设为18位)

let idRegex = /^\d{17}[\dXx]$/;
console.log(idRegex.test("123456789012345678")); // true
console.log(idRegex.test("12345678901234567X")); // true
console.log(idRegex.test("12345678901234567A")); // false

以上是关于JavaScript正则表达式的详细解释和示例代码。希望这些信息能帮助你更好地理解和使用JavaScript中的正则表达式。

相关推荐

Django零基础速成指南:快速打造带用户系统的博客平台

#python##服务器##API##编程##学习#不是所有教程都值得你花时间!这篇实战指南将用5分钟带你解锁Django核心技能,手把手教你从零搭建一个具备用户注册登录、文章管理功能的完整...

iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点

这款Bootstrap半越狱工具终于更新,离上一次更新已相隔很久,现在推出1.2.9版本,主要为内置两点功能进行更新,也是提升半越狱的稳定性。如果你正在使用这款半越狱工具的,建议你更新。注意!...

iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具

本文主要讲Bootstrap半越狱工具更新相关内容。如果你是iOS16.0至16.6.1和17.0系统的,想体验半越狱的果粉,请继续往下看。--知识点科普--Bootstrap...

SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统

今日推荐:SpringBoot整合工作流引擎Acticiti的源码推荐理由:1、SpringBoot整合工作流引擎Acticiti系统2、实现了三级权限结构3、持久层使用了mybatis框架4、流程包...

SpringCloud自定义Bootstrap配置指南

在SpringCloud中自定义Bootstrap配置需要以下步骤,以确保在应用启动的早期阶段加载自定义配置:1.添加依赖(针对新版本SpringCloud)从SpringCloud2020...

Python使用Dash开发网页应用(三)(python网页开发教程)

PlotlyDash开发Web应用示例一个好的网页设计通常都需要编写css甚至js来定制前端内容,例如非常流行的bootstrap框架。我们既然想使用Dash来搭建web应用,很大的一个原因是不熟悉...

Oxygen XML Editor 27.1 中的新功能

OxygenXMLEditor27.1版是面向内容作者、开发者、合作者和出版商的行业领先工具包的增量版本。在27.1版本中,AIPositronAssistant得到了增强,包括用于...

【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力

一、结论写在前面论文提出了Mini-Gemini,一个精简而强大的多模态VLM框架。Mini-Gemini的本质在于通过战略性框架设计、丰富的数据质量和扩展的功能范围,发掘VLM的潜在能力。其核心是补...

谐云课堂 | 一文详解分布式改造理论与实战

01微服务与分布式什么是分布式?首先,我们对上图提到的部分关键词进行讲解。单体,是指一个进程完成全部的后端处理;水平拆分,是同一个后端多环境部署,他们都处理相同的内容,使用反向代理来均衡负载,这种也叫...

基于Abaqus的手动挡换挡机构可靠性仿真

手动挡,也称手动变速器,英文全称为Manualtransmission,简称MT,即用手拨动换挡操纵总成才能改变变速器内的齿轮啮合位置,改变传动比,从而达到变速的目的。家用轿车主要采用软轴连接的换挡...

【pytorch】目标检测:彻底搞懂YOLOv5详解

YOLOv5是GlennJocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了n、s、m、l、x五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020...

超实用!50个非常实用的PS快捷键命令大全分享

今天,给大家介绍50个非常实用的快捷键命令大全,大家伙都是设计师,关于软件使用那是越快越好啊。一、常用的热键组合1、图层混合模式快捷键:正常(Shift+Option+N),正片叠底(Shif...

Pohtoshop中深藏不露的小技巧(科目一考试技巧记忆口诀看完必过)

邢帅教育ps教程为大家总结了一些Pohtoshop中深藏不露的小技巧,可以帮助到大家在设计时减少不必要的麻烦,提高工作效率哦~~~1.设置网格线保持像素完美不在1:1分辨率下也能保持像素完美,可以...

Ganglia监控安装总结(监控安装工作总结)

一、ganglia简介:Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据...

谁说Adobe XD做不出好看的设计?那是你没搞懂这些功能

AdobeXD的美化栏具有将设计视图美化的功能,它能使界面设计和原型设计更漂亮、更吸引眼球。美化栏的7个功能包括竖线布局设计、横线布局设计、重复网格、图形大小和位置设置、响应式调整大小、文字美化以及...