基础知识点
-
字符组 []
[abc],表示匹配一个字符,它可以是"a"、"b"、"c"之一 , 等于oneof
-
排除字符组 [^]
- [^abc], 例如
[^abc],表示是一个除"a"、"b"、"c"之外的任意一个字符。字符组的第一位放^(脱字符),表示求反的概念
- [^abc], 例如
-
多选分支 |
- 具体形式如下:
(p1|p2|p3),其中p1、p2和p3是子模式,用|(管道符)分隔,表示其中任何之一。
- 具体形式如下:
-
量词 {}
- 量词也称重复。掌握
{m,n}的准确含义后,只需要记住一些简写形式。
- 量词也称重复。掌握
-
(?=p) (?!p) 截取字符串的时候用
- (?=p) : 表示p前面的位置;(?!p)和(?=p)相反,非p前面的位置;
-
括号()
- 可以做分组提取数据;
- 常见的简写
| 字符组 | 具体含义 |
|---|---|
\d | 表示 [0-9]。表示是一位数字。 记忆方式:其英文是 digit(数字)。 |
\D | 表示 [^0-9]。表示除数字外的任意字符。 |
\w | 表示 [0-9a-zA-Z_]。表示数字、大小写字母和下划线。 记忆方式:w 是 word 的简写,也称单词字符。 |
\W | 表示 [^0-9a-za-z_]。非单词字符。 |
\s | 表示 [ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。 记忆方式:s 是 space 的首字母,空白符的单词是 white space。 |
\S | 表示 [^ \t\v\n\r\f]。 非空白符。 |
. | 表示 [^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符除外。 记忆方式:想想省略号 …中的每个点,都可以理解成占位符,表示任何类似的东西。 |
应用
API
- string.match(regex);
-
- 正则匹配字符串; 返回匹配的, 如果global就全部匹配,如果没有global就只匹配第一个;
let text = "Hello world, welcome to the universe.";
let regexGlobal = /\b(\w+)\b/g; // 全局匹配
let regexNoGlobal = /\b(\w+)\b/; // 非全局匹配
console.log(text.match(regexNoGlobal)); // 返回第一个匹配 ['Hello', 'Hello', index: 0, input: 'Hello world, welcome to the universe.', groups: undefined]
console.log(text.match(regexGlobal)); // 返回所有匹配项的数组 ['Hello', 'world', 'welcome', 'to', 'the', 'universe']
- string.replace(regex, string); 字符串按照正则替换
- regex.test(string); 字符串匹配正则,返回true, false;
使用
-
提取
- 分组可以提取(),
const regular = /(\d{4})-(\d{2})-(\d{2})/;
var string = '2024-01-21';
string.match(regular)
// ['2024-01-21', '2024', '01', '21', index: 0, input: '2024-01-21', groups: undefined]
- 替换$1, $2,代表相应的分组
var regex = /(\d{4})-(\d{2})-(\d{2})/;
var string = "2017-06-12";
var result = string.replace(regex, "$2/$3/$1");
console.log(result);