前端(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)函数_储存类—— 配合正则做表单数据验证后存储 - 文档
轻语言网站:变量与数组与对象的定义—— 变量声明与基础语法