JS正则基础入门总结

106 阅读2分钟

基础知识点

  • 字符组 []

    • [abc],表示匹配一个字符,它可以是 "a""b""c" 之一 , 等于oneof
  • 排除字符组 [^]

    • [^abc], 例如 [^abc],表示是一个除 "a""b""c"之外的任意一个字符。字符组的第一位放 ^脱字符),表示求反的概念
  • 多选分支 |

    • 具体形式如下:(p1|p2|p3),其中 p1p2p3 是子模式,用 |管道符)分隔,表示其中任何之一。
  • 量词 {}

    • 量词也称重复。掌握 {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);

参考

第一章 正则表达式字符匹配攻略 | JS正则迷你书 (js-regex-mini-book.github.io)