正则表达式

文章目录
  1. 1. 先行搜索
  2. 2. API

基础

常用正则

参考资料

正则可视化工具

.匹配除\n换行符外的自负,若要匹配任意字符,可以使用[\s\S]

贪心、非贪心 {n,m}? {n,}? ?? o+? o+ o*?

先行搜索

继续匹配但不捕捉为结果,只是判断一下
(pattern) 对匹配结果进行分组
(?=pattern) 符合pattern则继续匹配
(?!pattern) 不符合pattern则继续匹配
(?:pattern) 丢弃匹配到的结果并继续匹配

"123456789".replace(/(\d{4})(?=\d)/g,'$1 '); // 1234 5678 9

"123456789".replace(/(\d{4})(?!\d)/g,'$1 '); // 123456789
"12345678s".replace(/(\d{4})(?!\d)/g,'$1 '); // 12345678 s

"123456789".replace(/(\d{4})(?:\d)/g,'$1 '); // 1234 6789


// "123456" ==> "123,456"
// "1234567" ==> "1,234,567"
"1234567".replace(/(?!^)(?=(\d{3})+$)/g, ",$&");

// "1123.11" ==> "1,123.11"
function format (num) {
const arr = num.toString().split('.');
arr[0] = arr[0].replace(/(\d)(?=(\d{3})+$)/g, '$1,');
return arr.join('.');
}

API

  • regexp.test
  • regexp.exec
  • string.split
  • string.replace
  • string.match
const reg = /foo*/g;
const str1 = 'table football foosball';
let arr;

while ((arr = reg.exec(str1)) !== null) {
console.log(`Found ${arr[0]} , Next starts at ${reg.lastIndex}.`);
// output1: "Found foo , Next starts at 9."
// output2: "Found foo , Next starts at 18."
}