前言
有时候合理利用正则表达式可以极大地减少重复代码的使用,通过正则表达式可以一次性解决代码替换的问题。
一、正则表达式是什么?
正则表达式是一种描述文本模式的方法,用于在文本中进行搜索、匹配和替换操作。它们是一种通用的语言,可以用于任何类型的文本,包括电子邮件、网页和程序代码等。正则表达式可以用于验证输入的数据是否符合特定的格式,例如电子邮件地址、电话号码或日期格式等。在编程语言中,正则表达式通常被用作字符串处理函数的参数,以实现高级的文本操作。
二、使用步骤
1.基本的正则表达式
代码如下(示例):
JavaScript中常见的正则表达式有:
1.匹配数字:`/^\d+$/`
- "^"代表开头,"$"代表结尾
- "\d"代表数字
- "+"代表至少一个数字
2.匹配邮箱:`/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/`
- "@"代表邮箱中间的符号
- 一般邮箱由数字、字母、下划线、中划线组成
- "."代表域名后缀,可能会有多个域名后缀,如.com.cn等
3.匹配手机号:`/^1[3-9]\d{9}$/`
- 以1开头
- 第二位必须在3到9之间
- "\d{9}"代表后面跟9个数字
4.匹配URL:`/^[a-zA-Z]+:\/\/[^\s]+$/`
- "://"是协议的分隔符
- "[^\s]+"代表一个或多个非空白字符
5.匹配日期:`/^(19\d{2}|20[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$/`
- 年份有19和20开头的,有4位
- 月份有01到12
- 日有01到31,注意二月份的天数是要看年份是否为闰年的。
6.匹配IP地址:`/^(25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3}$/`
- IP地址由4个0-255的数字组成,每个数字以"."分隔开。
2.基本类型
代码如下(示例):
这里列出常见的正则表达式类型及其含义:
1. 基本字符匹配:
- `.`:匹配任意单个字符
- `[ ]`:匹配其中任意一个字符
- `[^]`:匹配不在其中的任意一个字符
- `\d`:匹配数字,等价于`[0-9]`
- `\D`:匹配非数字,等价于`[^0-9]`
- `\w`:匹配字母、数字、下划线,等价于`[a-zA-Z0-9_]`
- `\W`:匹配非字母、数字、下划线,等价于`[^a-zA-Z0-9_]`
- `\s`:匹配空白字符,包括空格、制表符、换行符等
- `\S`:匹配非空白字符
2. 量词匹配:
- `*`:匹配前面的字符零次或多次
- `+`:匹配前面的字符一次或多次
- `?`:匹配前面的字符零次或一次
- `{n}`:匹配前面的字符恰好n次
- `{n,}`:匹配前面的字符至少n次
- `{n,m}`:匹配前面的字符至少n次,最多m次
3. 边界匹配:
- `^`:匹配字符串的开头
- `$`:匹配字符串的结尾
- `\b`:匹配单词边界
- `\B`:匹配非单词边界
4. 分组匹配:
- `()`:将其中的字符分为一组,可以在之后的匹配中引用该分组
- `|`:表示或,匹配其中的任何一个分组
5. 特殊字符匹配:
- `.`:表示任意单个字符
- `\`:转义字符,可以将特殊字符变成字面量字符进行匹配,例如`\.`可以匹配真正的点字符
以上是常见的正则表达式类型,不同编程语言或工具对正则表达式的实现可能略有不同,具体使用时需查看对应文档。
三、实战案例
1.使用正则表达式替换字符串中的特殊字符
将字符串中的 &、<、>、"(双引号)和 '(单引号)转换为相应的 HTML 字符实体。
function convertHTML(str) {
let strRegex1=/\&/g;
let strRegex2=/\</g;
let strRegex3=/\>/g;
let strRegex4=/[\\"]/g;
let strRegex5=/[\\']/g;
return str.replace(strRegex1,"&")
.replace(strRegex2,"<")
.replace(strRegex3,">")
.replace(strRegex4,""")
.replace(strRegex5,"'")
}
convertHTML("Dolce & Gabbana");