前端(JavaScript)函数_正则表达类

文档概述

轻语言网站开发中的正则表达式相关操作函数、用于文本模式匹配和处理,包含正则匹配、正则搜索、正则替换、正则验证等功能,常用于文本验证、数据提取、格式化处理等场景。

  • 正则字面量语法:使用 /表达式/标志 形式定义正则(如 /\d+/g),原生 JS 语法,轻语言支持直接使用
  • 匹配与搜索区别正则匹配 返回所有匹配项数组(无匹配返回 );正则搜索 返回首次匹配位置索引(未找到返回 -1)
  • 替换支持反向引用正则替换 中可用 $1$2 引用捕获组内容

💡 正则表达式入门:常用元字符 \d(数字)、\w(字母数字下划线)、\s(空白)、.(任意字符);量词 *(0+次)、+(1+次)、?(0/1次)、{n,m}(n到m次);标志 g(全局)、i(忽略大小写)、m(多行)。

函数:正则匹配(待操作内容,表达式)

在指定待操作内容中搜索与正则表达式的匹配项,然后将匹配项作为数组返回。代码示例:变量 匹配结果 = 正则匹配(待操作内容, 表达式)

' 提取文本中的所有数字
变量 文本 = "今年是2023年,人口有14亿,GDP增长了5.5%"
变量 数字表达式 = /\d+\.?\d*/g
变量 数字匹配 = 正则匹配(文本, 数字表达式)
调试输出("提取的数字: " + JSON编码(数字匹配))  ' ["2023","14","5.5"]

' 提取邮箱地址
变量 邮箱文本 = "联系我: john@example.com 或 mary@test.org"
变量 邮箱表达式 = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g
变量 邮箱匹配 = 正则匹配(邮箱文本, 邮箱表达式)
调试输出("邮箱地址: " + JSON编码(邮箱匹配))  ' ["john@example.com","mary@test.org"]

' 验证手机号格式
变量 手机号 = "13812345678"
变量 手机号表达式 = /^1[3-9]\d{9}$/
变量 手机号匹配 = 正则匹配(手机号, 手机号表达式)
' 注:无匹配时返回 空(轻语言空值关键字,等价于原生 JS 的 null)
如果(手机号匹配 != 空)
	调试输出("手机号格式正确")
否则
	调试输出("手机号格式错误")
结束 如果

函数:正则搜索(待操作内容,表达式)

使用正则方式根据表达式搜索指定内容;找到返回索引、否则返回-1。代码示例:变量 位置 = 正则搜索(待操作内容, 表达式)

' 查找关键词首次出现的位置
变量 文档 = "这是一份重要的技术文档,文档中包含了关键技术要点"
变量 关键词表达式 = /技术/
变量 位置 = 正则搜索(文档, 关键词表达式)
调试输出("关键词首次出现位置: " + 位置)  ' 7

' 检查是否包含敏感词
变量 评论 = "这个产品真的很好用,没有任何问题"
变量 敏感词表达式 = /垃圾|废物|差劲/
变量 搜索结果 = 正则搜索(评论, 敏感词表达式)
如果(搜索结果 != -1)
	调试输出("发现敏感词,位置: " + 搜索结果)
否则
	调试输出("未发现敏感词")
结束 如果

' 查找邮箱格式内容
变量 文本 = "联系方式: email@test.com"
变量 邮箱表达式 = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/
变量 邮箱位置 = 正则搜索(文本, 邮箱表达式)
如果(邮箱位置 != -1)
	调试输出("邮箱位置: " + 邮箱位置)
结束 如果

函数:正则替换(待操作内容,新内容,表达式)

使用正则方式根据表达式匹配指定内容并将其替换为新内容。代码示例:变量 结果 = 正则替换(待操作内容, 新内容, 表达式)

' 替换文本中的敏感词
变量 原文 = "这个产品真是垃圾,完全没法用"
变量 敏感词表达式 = /垃圾/
变量 替换结果 = 正则替换(原文, "**", 敏感词表达式)
调试输出("替换后: " + 替换结果)  ' 这个产品真是**,完全没法用

' 格式化电话号码
变量 电话 = "电话:13812345678"
变量 电话表达式 = /(\d{3})(\d{4})(\d{4})/
变量 格式化结果 = 正则替换(电话, "电话:$1-$2-$3", 电话表达式)
调试输出("格式化后: " + 格式化结果)  ' 电话:138-1234-5678

' 去除多余空格
变量 多空格文本 = "这    是   一   个   测试   文本"
变量 空格表达式 = /\s+/g
变量 去空格结果 = 正则替换(多空格文本, " ", 空格表达式)
调试输出("整理后: " + 去空格结果)  ' 这 是 一 个 测试 文本

学习要点

知识点代码示例说明
正则字面量/\d+/g使用 /.../ 定义正则,结尾标志 g(全局)、i(忽略大小写)、m(多行)
数字提取/\d+\.?\d*/g\d 匹配数字,+ 一次以上,\.? 可选小数点,* 零次以上
邮箱匹配/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g字符集 [...] 匹配其中任意字符,+ 一次以上,{2,} 至少2次
手机号验证/^1[3-9]\d{9}$/^ 开头,$ 结尾,[3-9] 范围匹配,\d{9} 恰好9位数字
空值判断如果(匹配结果 != 空)正则匹配 无匹配时返回 (等价于 null),需先判空再使用
索引判断如果(搜索结果 != -1)正则搜索 未找到返回 -1,不能与 比较
反向引用正则替换(电话, "$1-$2-$3", 表达式)$1$2$3 引用正则中的捕获组 ( ... ) 内容
空白处理/\s+/g\s 匹配空格/制表符/换行等空白字符,+ 匹配连续多个

相关文档

  • 文档前端(JavaScript)函数_字符串操作 —— 寻找文本倒找文本子文本替换 等字符串处理函数
  • 文档前端(JavaScript)函数_数据转换类 —— JSON编码JSON解析 等数据序列化函数
  • 文档前端(JavaScript)函数_数组操作 —— 正则匹配返回的数组遍历与处理
  • 文档前端(JavaScript)函数_储存类 —— 配合正则做表单数据验证后存储
  • 文档轻语言网站:变量与数组与对象的定义 —— 变量声明与基础语法