📅  最后修改于: 2023-12-03 14:55:54.411000             🧑  作者: Mango
正则表达式是一种用于匹配文本模式的工具,它提供了很多属性来帮助程序员进行更加高效的匹配。在本文中,我们将介绍一些常用的正则表达式属性以及它们的用法。
正则表达式的匹配模式决定了它是如何匹配文本的。常用的匹配模式包括:
i
(ignore case): 不区分大小写g
(global): 匹配全部文本m
(multiline): 支持多行匹配以下是一些匹配模式的使用例子:
// 忽略大小写匹配
const regex = /hello/i;
console.log(regex.test("Hello World")); // true
// 全局匹配
const regex2 = /hello/g;
console.log("hello hello".match(regex2)); // ["hello", "hello"]
// 多行匹配
const regex3 = /^hello/m;
console.log("hello\nworld".match(regex3)); // ["hello"]
字符类用于匹配一组字符中的任意一个。常用的字符类包括:
[]
: 匹配方括号中的任意一个字符[^]
: 匹配不在方括号中的任意一个字符.
: 匹配除换行符外的任意一个字符\w
: 匹配字母、数字、下划线中的任意一个字符\s
: 匹配空格、制表符、换行符中的任意一个字符\d
: 匹配数字中的任意一个字符以下是一些字符类的使用例子:
// 匹配任意一个字符
console.log(/./.test("hello")); // true
// 匹配任意一个字母数字下划线字符
console.log(/\w/.test("hello_world")); // true
// 不匹配任意一个数字
console.log(/[^0-9]/.test("123")); // false
// 匹配空白字符
console.log(/\s/.test("hello world")); // true
量词用于匹配一个或多个字符的出现次数。常用的量词包括:
*
: 匹配零个或多个字符+
: 匹配一个或多个字符?
: 匹配零个或一个字符{n}
: 匹配恰好 n 个字符{n,}
: 匹配至少 n 个字符{n,m}
: 匹配 n 到 m 个字符以下是一些量词的使用例子:
// 匹配任意个a或b
console.log(/a*b/.test("aaab")); // true
// 匹配至少一个数字
console.log(/\d+/.test("123")); // true
// 匹配恰好两个字符
console.log(/.{2}/.test("hello")); // true
// 匹配3个到5个字符
console.log(/.{3,5}/.test("hello")); // true
分组用于将表达式中的某一部分作为整体进行匹配,也可以通过分组来引用匹配结果。常用的分组方式包括:
()
: 将括号内的表达式作为一组|
: 匹配左右两边任意一个表达式\n
: 引用第 n 组的匹配结果以下是一些分组的使用例子:
// 匹配一个连续的数字或字母
console.log(/(\d|\w)+/.test("hello123")); // true
// 引用分组结果
const regex = /(\d{4})-(\d{2})-(\d{2})/;
const date = "2022-07-01";
const [, year, month, day] = date.match(regex);
console.log(`${year}-${month}-${day}`); // "2022-07-01"
边界用于匹配文本的开始或结束位置。常用的边界包括:
^
: 匹配文本的开始位置$
: 匹配文本的结束位置\b
: 匹配单词的边界以下是一些边界的使用例子:
// 匹配以 hello 开头的字符串
console.log(/^hello/.test("hello world")); // true
// 匹配以 world 结尾的字符串
console.log(/world$/.test("hello world")); // true
// 匹配包含 hello 单词的字符串
console.log(/\bhello\b/.test("hello world")); // true
以上就是常用的正则表达式属性,它们能够帮助程序员更加高效地进行文本匹配。