JavaScript正则表达式作弊表

JavaScript正则表达式作弊表

. 约 4 分钟读完

正则表达式(Regular Expression,简称Regex或RegExp)是一种强大的文本匹配工具,用于在字符串中查找、替换和验证模式。在JavaScript中,我们可以使用内置的正则表达式对象来处理字符串。本文将介绍JavaScript中正则表达式的API、使用方法以及一些常见的正则知识。

正则表达式

正则表达式由字母和特殊字符(元字符)组成,用于描述字符串的模式。以下是一些基本的元字符:

正则元字符

元字符 功能
. 通配符,匹配单个任意字符,除换行符以外
^ 匹配以什么开头
$ 匹配以什么结尾
* 匹配0到多次的重复(贪婪模式)
+ 匹配1到多次重复(贪婪模式)
? 匹配0到1次重复(贪婪模式)
*?,+?,??,{m,n}? 优先匹配最少次(非贪婪模式)
{n, m} 匹配n到m次重复,如果只有一个参数,则匹配固定n次重复
[ab] 字符集,匹配方括号内任意一个字符(or),只有元字符(-至,^非 ,\转义)生效
() 组,作为组合封装
|
\ 反斜杠后跟元字符,则去除元字符的功能
反斜杠后跟普通字符,则实现特殊功能

字符类和转义字符也是正则表达式的重要组成部分,它们用于匹配特定的字符集合。

JavaScript中的正则表达式还支持一些修饰符,用于调整匹配行为:

  • i:忽略大小写。
  • g:全局匹配,查找所有匹配而不是在找到第一个匹配后停止。
  • m:多行匹配。

转义字符

转义字母 功能 等价
\d 匹配任何十进制数 [0-9]
\D 匹配任何非十进制数 [^0-9]
\s 匹配任何空白字符 [ \t\n\f\v]
\S 匹配任何非空白字符 [^ \t\n\f\v]
\w 匹配任何字母数字下划线字符 [a-zA-Z0-9_]
\W 匹配任何非字母数字下划线字符 [^a-zA-Z0-9_]
\b 匹配一个单词边界,也就是单词和空格间的位置

匹配模式

模式(完整写法) 功能
I(re.IGNORECASE) 忽略大小写
M(MULTILINE) 多行模式,改变'^'和'$'的行为(参见上图)
S(DOTALL) 点任意匹配模式,改变'.'的行为

JS中的正则

JavaScript中的正则表达式对象JavaScript中的正则表达式对象是RegExp类型的实例。我们可以使用字面量或构造函数来创建正则表达式。以下是一些常用的正则表达式方法:

  • 创建正则表达式:
// 使用字面量创建正则表达式:

const pattern = /abc/;

// 使用构造函数创建正则表达式:

const pattern = new RegExp('abc');
  • 测试字符串是否匹配模式:
    使用test方法检查字符串是否匹配模式:
const str = 'abcdef';
const isMatch = pattern.test(str);
console.log(isMatch); // true
  • 查找匹配项:
    使用exec方法查找匹配项:
const result = pattern.exec('abcdef');
console.log(result[0]); // 'abc'
  • 替换字符串中的匹配项:
    使用replace方法替换匹配项:
const replacedStr = 'abcdef'.replace(pattern, 'xyz');
console.log(replacedStr); // 'xyzdef'
  • 方法速查表
方法名 功能
re.match() 从字符串开始匹配
re.search() 搜索整个字符串
re.findall() 匹配所有字符串中符合的字符串
re.finditer() 匹配所有字符串中符合的字符串,并以迭代器的形式返回
re.compile() 将正则表达式编译成RegexObject对象直接使用,预编译以调高效率
re.split() 根据匹配到的内容,切分字符串
re.sub() 找到后并替换
re.purge() 清除缓存中的正则表达式
re.escape() 匹配所有所有反斜杠后的所有非字母数字的字符串
group() 返回正则表达式中定义了的组(即()),group(0)永远是原始字符串,group(n)则表示第n个子串
groups() 以元祖的形式返回每一个子串

常见的正则表达式案例

  • 验证邮箱格式:
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const isValidEmail = emailPattern.test('example@email.com');
  • 提取URL中的域名:
const url = 'https://www.example.com/path/to/resource';
const domain = url.match(/:\/\/(.[^/]+)/)[1];
  • 匹配手机号码:
const phonePattern = /^(\+\d{1,2})?\d{10}$/;
const isValidPhone = phonePattern.test('+1234567890');
  • 验证密码强度(至少包含一个大写字母、一个小写字母和一个数字):
const passwordPattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/;
const isValidPassword = passwordPattern.test('SecurePass123');
  • 提取HTML标签中的内容:
const html = '<p>Hello, <strong>world</strong>!</p>';
const content = html.match(/<[^>]*>([^<]*)<\/[^>]*>/)[1];
本篇已被阅读