正则基础学习1 这俩天补上正则全部内容,让你简单的学会正则,欢迎收藏当文档

正则 详解 包括小案例 可以做复习笔记和查看小文档

密码验证:

var reg = /^(?=\D+\d)(?=.*[A-Z])[a-zA-Z0-9]{8-16}$/;

正则表达式修饰符

g i m
g // 全局匹配
i // 不区分大小写
m // 多行匹配 \n 产生的换行

reg 返回正则表达式基础

var reg = /a/g
console.log(new reg.constructor());
console.log(reg.compile());

exec(“str”) 在字符串中找到对应正则的内容 index为下标开始的位置 全局匹配无效

var reg = /a/g
console.log(reg.exec("bacead"));
// outPut 
// ['a', index: 1, input: 'bacead', groups: undefined]

test(“str”) 是否可以在字符串中找到满足条件的内容 返回true或false

 var reg = /a/g
 console.log(reg.test("bbcebd")); // outPut flase
 console.log(reg.test("bacebd")); // outPut true

console.dir(reg)

 outPut=>{
    /a/g
    dotAll: false
    flags: "g"
    global: true
    hasIndices: false
    ignoreCase: false
    lastIndex: 0
    multiline: false
    source: "a"
    sticky: false
    unicode: false
    [[Prototype]]: Object
 }
 
 // source 表示 正则内容
 // flags  对应正则修饰符

字符串方法 replace() search() match() split()

// search 方法 可以按照条件查找
var str = "1asdfacdf";
var index1 = str.search("a");
var index2 = str.search(/a/g);
console.log(index); // 1 1

// 扩展 a后面有c的索引
var str = "1asdfacsdf";
var index = str.search(/a(?=c)/g);
console.log(index); // 5

// split(str) 截取
console.log("a|b&c|d&e".split("|")); // out ['a', 'b&c', 'd&e']
console.log("a|b&c|d&e".split(/[|&]/)); // ['a', 'b', 'c', 'd', 'e']
console.log("http://www.163.com/news/nsl/index.html?a=1&b=2".split(/(?<=:\/\/.*?)\//));


// replace(str) 方法
// 替换所有的a 变成0
var str = "adfnsfasdafa";
str = str.replace(/a/g, "0");
console.log(str);

// 可以替换多个,可以每次替换时执行后面的函数,函数内返回return结果会替换内容
str = str.replace(/a/g, (item, index)=>{
    console.log(item, index);
});
console.log(str);

// match(str) 如果没有全局查找,没有群组, 方法等同于正则的exec
// 返回满足正则全部查找内容
console.log("adfnsfasdafa".match(/a/g)); // (4) ['a', 'a', 'a', 'a']
// 满足返回群组的内容
console.log("4[ac]".match(/(\d)\[([a-z]*)]/));

元字符

  • 定义: var reg = /a/; a 就是元字符

一、 通配符

  1. “.” 匹配任意一个字符

    console.log(“abacad”.match(/a./g));

    // outPut (3) [‘ab’, ‘ac’, ‘ad’]

  2. “” 转义字符 取消元字符原有的作用 恢复为字符特征

    console.log(“aba.c.a.dac”.match(/a./g));
    // outPut (2) [‘a.’, ‘a.’]

  3. “[]” 内可以满足一个字符串的替代 [内的 “.” 不在具有通配符的作用]

    console.log(“abacad”.match(/a[bd]/g));
    // outPut (2) [‘ab’, ‘ad’]

  4. [] 内的 - 表示多少到多少

    console.log(“a1a2a3a4a5a6”.match(/a[0-9]/g));
    console.log(“a1a2a3a4a5a6”.match(/a[a-zA-Z]/g));
    // 不要数字 ^ 在中括号中 只能写在第一位, 若是卸载非第一位 则是字符^
    console.log(“a1a2a3a4a5agavaca6”.match(/a[^0-9]/g));
    // OutPut (3)[‘ag’, ‘av’, ‘ac’]

  5. \w => [a-zA-Z0-9_] 任意一个字符

  6. \W => [^a-zA-Z0-9_] 除了数字字母下划线以外的其他字符

  7. \d => [0-9] 任意数字

  8. \D => [^0-9] 任意非数字

  9. \s => 空白字符

  10. \S => 非空白字符

练习 匹配YYYY-MM-DD
\d\d\d\d-\d\d-\d\d ???

重复 {n};

console.log("aaaaabbb".match(/a{4}/g)); // 匹配4个次
console.log("aaaaabbb".match(/a{2}/g)); // 匹配4个次
console.log("aaaaabbb".match(/a{1}/g)); // 匹配4个次
console.log("aaaaabbb".match(/a{0}/g)); // 匹配4个次
console.log("acacacacacbbb".match(/ac{4}/g)); // 匹配4个次
console.log("acacacacacbbb".match(/(ac){4}/g)); // 匹配4个次
OUT{
    ['aa', 'aa']
    2.重复.js:1 ['aaaa']
    2.重复.js:2 (2) ['aa', 'aa']
    2.重复.js:3 (5) ['a', 'a', 'a', 'a', 'a']
    2.重复.js:4 (9) ['', '', '', '', '', '', '', '', '']
    2.重复.js:5 null
    2.重复.js:6 ['acacacac']
}

贪婪匹配 {最小重复次数, 最大重复次数} “?”表示 {} “*” 表示{0,} “+” {1,}

console.log("aaaaaasdasaaaaaaaaaaaa".match(/a{2,5}/g)); // (4) ['aaaaa', 'aaaaa', 'aaaaa', 'aa'] 优先匹配最大的
console.log("aaaaaasdasaaaabbaaaaaaaa".match(/a{2,5}b{2,5}/g)); // ['aaaabb']  优先匹配最大的
console.log("aaaaaasdabsaabbaaaabbaaaaaa".match(/a{2,5}b{2,5}/g)); // ['aabb', 'aaaabb']优先匹配最大的
console.log("aaaaaasdasaabbbaababbbbaaaaaabbbbba".match(/a{2,5}b{2,5}/g)); // ['aabbb', 'aaaaabbbbb'] 优先匹配最大的

console.log("afdsczvqadfafafafaaa".match(/a{1,}/g))// 表示匹配无穷个a

\D+\d 表示 非数字起头,但是后续字符串中至少由一位数字

.*[A-Z] .是通配符 *{0,} [a-z] 在整个字符串中必须有一个小写字母

.*[A-Z] 表示真个字符串中必须包含一个大写字母

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值