js加固之正则表达式学习笔记
let regex = /hello/
let str = '1hello world';
let result = regex.test(str)
console.log(result); // true
let result2 = regex.exec(str)
// 'hello' -> 匹配的全部字符串
// index: -> 匹配到的字符位于原始字符串的基于0的索引值
// input: -> 原始字符串
console.log(result2); // [ 'hello', index: 0, input: 'hello world', groups: undefined ]
// flag
// - i 不区分大小写
// - g 全局搜索 常用于执行一个全局搜索匹配, 即(不仅仅返回第一个匹配的, 而是返回全部)
// 元字符
// - \d 匹配一个数字 相当于 [0-9]
// - \w 匹配一个单字字符(字母或者数字)。等价于 [A-Za-z0-9_]即字母数字字符
// - \s 匹配一个空白字符,包括空格、制表符、换页符和换行符
// - \t 匹配一个水平制表符
// - \b 匹配一个单词的开头和结尾 成为字符界
// - . 匹配一个除换行符之外的任何单个字符
// - \D 匹配一个非数字字符.等价于 [^0-9]
// - \W 匹配一个非单字字符。等价于 [^A-Za-z0-9_]
// - \S 匹配一个非空白字符
// 量词
// + 匹配一个或多个
let regx1 = /\d+/ // 匹配一个或多个的 数字
// 8 true
// 888 ture
// true
console.log(regx1.test('8'));
// true
console.log(regx1.test('88899'));
// true
console.log(regx1.test('8s888845'));
// * 匹配0个或多个
let regx2 = /go*d/
// true
console.log(regx2.test('god'));
console.log(regx2.test('good'));
console.log(regx2.test('good'));
// ? 匹配0个或1个
let regx3 = /go?d/
console.log(regx3.test('god'));
// true
console.log(regx3.test('good'));
// true
console.log(regx3.test('goood'));
// false
// ^ 以什么开头
let regx4 = /^g/;
console.log(regx4.test('good'));
// true
console.log(regx4.test('bad'));
// false
console.log(regx4.test('tag'));
// false
// $ 以什么结尾
let regx5 = /.com$/
console.log(regx5.test('test@testmail.com'));
// true
console.log(regx5.test('test@testmail'));
// false
//
// {N} 匹配了前面一个字符刚好出现 N 次
// {N, } 匹配了前面一个字符至少出现了 N 次
// {N, M} 匹配了前面一个字符知道出现 N 次,至多出现 M 次
// (x) 匹配x并记住匹配。这些称为捕获组。这也用于在正则表达式中创建子表达式。
// (\1) 记住并使用 第一个子表达式中的匹配式
// (?:x) 匹配x,不记住匹配 这些称为 非捕获组
// (?=y) 只有当 x 后面跟着y,先行后断言
let regx6 = /red(\s*)(?=apple)/
console.log('regx6.test("red pear")', regx6.test("red pear"));
console.log('regx6.test("red apple")', regx6.test("red apple"));
// 202104021440
let str1 = "202104021440"
function format(str) {
// year
let year = /2021/
// mounth
let mouth = 1;
// day
}
/**
* [reg 百度网盘链接匹配]
* 说明:匹配支持百度分享的两种链接格式
* 格式一:链接: https://pan.baidu.com/s/15gzY8h3SEzVCfGV1xfkJsQ 提取码: vsuw 复制这段内容后打开百度网盘手机App,操作更方便哦
* 格式二:http://pan.baidu.com/share/link?shareid=179436&uk=3272055266 提取码: vsuw 复制这段内容后打开百度网盘手机App,操作更方便哦
* 匹配出下载地址和提取码,并且还支持如果没有提取码,也能匹配出下载链接。
* @type {正则表达式}
* @return array 返回匹配成功的链接和地址
*/
function baiduDownLinkArr( string ){
var reg = /([http|https]*?:\/\/pan\.baidu\.com\/[(?:s\/){0,1}|(share)]*(?:[0-9a-zA-Z?=&])+)(?:.+:(?:\s)*)?([a-zA-Z]{4})?/;
console.log(reg.exec(string));
}
baiduDownLinkArr("https://pan.baidu.com/s/15gzY8h3SEzVCfGV1xfkJsQ")
console.log(str1.replace(/2021/, '2021年'));
本作品采用《CC 协议》,转载必须注明作者和本文链接