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 协议》,转载必须注明作者和本文链接
支付宝领个红包就是对我最大的赞赏了
shijf
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!