正则表达式 RegExp(regular expression)

2023-11-20 13:49:12 浏览数 (1)

前端开发中,正则表达式常用于字符串匹配、验证输入的格式、替换字符串等操作。它是一个强大的工具,能够用一种灵活的方式来处理文本数据。在前端开发中,你可以利用正则表达式来实现诸如验证邮箱格式、手机号码格式、提取特定模式的文本等功能。

正则表达式 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 对象来创建正则表达式,并使用其方法来进行匹配、替换等操作,例如:

代码语言:javascript复制
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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞