信息发布→ 登录 注册 退出

Javascript正则表达式如何工作_怎样进行文本匹配和替换?

发布时间:2025-12-22

点击量:
JavaScript正则表达式通过模式匹配字符串,支持字面量或构造函数创建,含普通字符、元字符、量词和修饰符;可用test()、exec()匹配,replace()替换,并需注意转义、g标志及适用边界。

JavaScript 正则表达式通过模式(pattern)描述文本结构,引擎按规则扫描字符串,找到符合模式的子串——匹配成功后可提取、验证或替换内容。

正则表达式的基本构成

一个正则表达式由字面量(如 /abc/)或构造函数(new RegExp("abc"))创建。核心包括:

  • 普通字符:如 a1,匹配自身
  • 元字符:如 .(匹配任意单字符)、^(行首)、$(行尾)、\d(数字)、\w(单词字符)
  • 量词:如 *(0次或多次)、+(1次或多次)、?(0次或1次)、{2,5}(2到5次)
  • 修饰符(flags):如 g(全局匹配)、i(忽略大小写)、m(多行模式)

用 test() 和 exec() 进行匹配

test() 返回布尔值,适合做条件判断;exec() 返回匹配结果对象(含 index0groups 等),适合提取内容。

例如检查邮箱格式:

const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
console.log(emailRegex.test("user@example.com")); // true
console.log(emailRegex.test("invalid@")); // false

提取日期中的年份和月份:

const dateRegex = /(\d{4})-(\d{2})-\d{2}/;
const match = dateRegex.exec("2025-09-15");
console.log(match[1]); // "2025"
console.log(match[2]); // "09"

用 replace() 进行文本替换

replace() 接收正则表达式(支持 g 修饰符实现全部替换)和替换内容。替换内容可以是字符串,也可以是函数——函数参数包含匹配项、分组、位置等,适合动态处理。

  • 简单替换:"hello world".replace(/o/g, "0") → "hell0 w0rld"
  • 带分组的替换:"2025-09-15".replace(/(\d{4})-(\d{2})-(\d{2})/, "$2/$3/$1") → "09/15/2025"
  • 函数式替换(转为大写首字母):
    "javascript is cool".replace(/\b\w/g, c => c.toUpperCase()); // "Javascript Is Cool"

常见陷阱与建议

正则容易写错,尤其在边界和转义上:

  • 字符串中反斜杠需双写:RegExp("\\d+"),而字面量写为 /\d+/
  • 忘记 g 标志会导致只替换第一个匹配项
  • . 默认不匹配换行符,需要 /s(ES2025+)或手动加 [\s\S]
  • 过度使用正则处理复杂结构(如嵌套 HTML、JSON)不如用专用解析器可靠

不复杂但容易忽略

标签:# javascript  # java  # html  # js  # json  # 正则表达式  # ai  # 邮箱  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!