前端开发中,正则表达式常用于字符串匹配、验证输入的格式、替换字符串等操作。它是一个强大的工具,能够用一种灵活的方式来处理文本数据。在前端开发中,你可以利用正则表达式来实现诸如验证邮箱格式、手机号码格式、提取特定模式的文本等功能。
正则表达式 RegExp(regular expression)
用来处理“字符串”的规则【匹配 & 捕获】
- 只能处理字符串类型的值
- 匹配:验证当前字符串是否符合我设定的规则(test)
- 捕获:把字符串中符合规则的部分捕获到
正则的匹配
test()方法
代码语言:txt复制let reg = /d /;//只要包含一到多个数字
let str = 'zhufeng123';
console.log(reg.test(str));//true
正则表达式由“元字符”和“修饰符”组成
正则表达式中的元字符和修饰符
量词元字符:设置出现的次数
代表出现的次数
*:零到多次
:一到多次
?:零次或一次
{n}:出现n次
{n,}:出现n到多次
{n,m};出现n到m次
特殊元字符:单个或者组合在一起代表特殊的含义
有自己特殊含义的
:转义字符(普通->特殊->普通)
. :除n(换行符)以外任意字符
^:以哪一个元字符作为开始
$:以哪一个元字符作为结束
n:换行符
d:0~9之间的一个数字
D:非0~9之间的一个数字 (大写和小写的意思是相反的)
w:数字、字母、下划线
s:一个空白字符(包含空格、制表符TAB、换页符Enter等)
t:一个制表符(一个TAB键:四个空格)
b:匹配一个单词的边界
x|y:x或者y中的一个字符
xyz:x或者y或者z中的一个字符
^xy:除了x/y以外的任意字符
a-z:指定a-z这个范围中的任意字符 0-9a-zA-Z_===w
^a-z:上一个的取反“非”
():正则中的分组符号
(?:):只匹配不捕获
(?=):正向预查(?=后跟的是条件,必须符合这个条件)
(?!):负向预查
普通元字符
普通元字符代表的含义是自己本身
修饰符
i => ignnoreCase 忽略单词大小写匹配
m => multiline 可以进行多行匹配
g => global 全局匹配
例如,验证邮箱格式的正则表达式可以是:
代码语言:javascript复制const emailRegex = /^[w-] (.[w-] )*@([w-] .) [a-zA-Z]{2,7}$/;
这个正则表达式可以验证常见的邮箱格式,但并不是万能的。在实际开发中,根据需求,你可能需要调整或者使用更复杂的正则表达式。
手机号码的验证也可以使用正则表达式,比如:
代码语言:javascript复制const phoneRegex = /^[1-9]d{2}-d{3}-d{4}$/;
这个正则表达式用于验证形如 123-456-7890
的美国电话号码格式。但要记住,不同国家或地区的电话号码格式不同,可能需要根据实际情况进行调整。
在 JavaScript 中,你可以使用 RegExp
对象来创建正则表达式,并使用其方法来进行匹配、替换等操作,例如:
const myString = 'Hello, my email is example@email.com';
const emailRegex = /[w-] (.[w-] )*@([w-] .) [a-zA-Z]{2,7}/;
const foundEmail = myString.match(emailRegex);
if (foundEmail) {
console.log('Found email:', foundEmail[0]);
} else {
console.log('Email not found');
}
这段代码会在 myString
中查找匹配邮箱格式的字符串,并将其打印出来。这只是正则表达式在前端开发中的一个简单应用,实际上它有很多强大的应用场景。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!