正则基础学习1 这俩天补上正则全部内容,让你简单的学会正则,欢迎收藏当文档
正則 詳解 包括小案例 可以做復(fù)習(xí)筆記和查看小文檔
密碼驗(yàn)證:
var reg = /^(?=\D+\d)(?=.*[A-Z])[a-zA-Z0-9]{8-16}$/;
正則表達(dá)式修飾符
g i m g // 全局匹配 i // 不區(qū)分大小寫 m // 多行匹配 \n 產(chǎn)生的換行reg 返回正則表達(dá)式基礎(chǔ)
var reg = /a/g console.log(new reg.constructor()); console.log(reg.compile());exec(“str”) 在字符串中找到對(duì)應(yīng)正則的內(nèi)容 index為下標(biāo)開始的位置 全局匹配無效
var reg = /a/g console.log(reg.exec("bacead")); // outPut // ['a', index: 1, input: 'bacead', groups: undefined]test(“str”) 是否可以在字符串中找到滿足條件的內(nèi)容 返回true或false
var reg = /a/gconsole.log(reg.test("bbcebd")); // outPut flaseconsole.log(reg.test("bacebd")); // outPut trueconsole.dir(reg)
outPut=>{/a/gdotAll: falseflags: "g"global: truehasIndices: falseignoreCase: falselastIndex: 0multiline: falsesource: "a"sticky: falseunicode: false[[Prototype]]: Object}// source 表示 正則內(nèi)容// flags 對(duì)應(yīng)正則修飾符字符串方法 replace() search() match() split()
// search 方法 可以按照條件查找 var str = "1asdfacdf"; var index1 = str.search("a"); var index2 = str.search(/a/g); console.log(index); // 1 1// 擴(kuò)展 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);// 可以替換多個(gè),可以每次替換時(shí)執(zhí)行后面的函數(shù),函數(shù)內(nèi)返回return結(jié)果會(huì)替換內(nèi)容 str = str.replace(/a/g, (item, index)=>{console.log(item, index); }); console.log(str);// match(str) 如果沒有全局查找,沒有群組, 方法等同于正則的exec // 返回滿足正則全部查找內(nèi)容 console.log("adfnsfasdafa".match(/a/g)); // (4) ['a', 'a', 'a', 'a'] // 滿足返回群組的內(nèi)容 console.log("4[ac]".match(/(\d)\[([a-z]*)]/));元字符
- 定義: var reg = /a/; a 就是元字符
一、 通配符
“.” 匹配任意一個(gè)字符
console.log(“abacad”.match(/a./g));
// outPut (3) [‘a(chǎn)b’, ‘a(chǎn)c’, ‘a(chǎn)d’]
“” 轉(zhuǎn)義字符 取消元字符原有的作用 恢復(fù)為字符特征
console.log(“aba.c.a.dac”.match(/a./g));
// outPut (2) [‘a(chǎn).’, ‘a(chǎn).’]
“[]” 內(nèi)可以滿足一個(gè)字符串的替代 [內(nèi)的 “.” 不在具有通配符的作用]
console.log(“abacad”.match(/a[bd]/g));
// outPut (2) [‘a(chǎn)b’, ‘a(chǎn)d’]
[] 內(nèi)的 - 表示多少到多少
console.log(“a1a2a3a4a5a6”.match(/a[0-9]/g));
console.log(“a1a2a3a4a5a6”.match(/a[a-zA-Z]/g));
// 不要數(shù)字 ^ 在中括號(hào)中 只能寫在第一位, 若是卸載非第一位 則是字符^
console.log(“a1a2a3a4a5agavaca6”.match(/a[^0-9]/g));
// OutPut (3)[‘a(chǎn)g’, ‘a(chǎn)v’, ‘a(chǎn)c’]
\w => [a-zA-Z0-9_] 任意一個(gè)字符
\W => [^a-zA-Z0-9_] 除了數(shù)字字母下劃線以外的其他字符
\d => [0-9] 任意數(shù)字
\D => [^0-9] 任意非數(shù)字
\s => 空白字符
\S => 非空白字符
練習(xí) 匹配YYYY-MM-DD
\d\d\d\d-\d\d-\d\d ???
重復(fù) {n};
console.log("aaaaabbb".match(/a{4}/g)); // 匹配4個(gè)次 console.log("aaaaabbb".match(/a{2}/g)); // 匹配4個(gè)次 console.log("aaaaabbb".match(/a{1}/g)); // 匹配4個(gè)次 console.log("aaaaabbb".match(/a{0}/g)); // 匹配4個(gè)次 console.log("acacacacacbbb".match(/ac{4}/g)); // 匹配4個(gè)次 console.log("acacacacacbbb".match(/(ac){4}/g)); // 匹配4個(gè)次 OUT{['aa', 'aa']2.重復(fù).js:1 ['aaaa']2.重復(fù).js:2 (2) ['aa', 'aa']2.重復(fù).js:3 (5) ['a', 'a', 'a', 'a', 'a']2.重復(fù).js:4 (9) ['', '', '', '', '', '', '', '', '']2.重復(fù).js:5 null2.重復(fù).js:6 ['acacacac'] }貪婪匹配 {最小重復(fù)次數(shù), 最大重復(fù)次數(shù)} “?”表示 {} “*” 表示{0,} “+” {1,}
console.log("aaaaaasdasaaaaaaaaaaaa".match(/a{2,5}/g)); // (4) ['aaaaa', 'aaaaa', 'aaaaa', 'aa'] 優(yōu)先匹配最大的 console.log("aaaaaasdasaaaabbaaaaaaaa".match(/a{2,5}b{2,5}/g)); // ['aaaabb'] 優(yōu)先匹配最大的 console.log("aaaaaasdabsaabbaaaabbaaaaaa".match(/a{2,5}b{2,5}/g)); // ['aabb', 'aaaabb']優(yōu)先匹配最大的 console.log("aaaaaasdasaabbbaababbbbaaaaaabbbbba".match(/a{2,5}b{2,5}/g)); // ['aabbb', 'aaaaabbbbb'] 優(yōu)先匹配最大的console.log("afdsczvqadfafafafaaa".match(/a{1,}/g))// 表示匹配無窮個(gè)a\D+\d 表示 非數(shù)字起頭,但是后續(xù)字符串中至少由一位數(shù)字
.*[A-Z] .是通配符 *{0,} [a-z] 在整個(gè)字符串中必須有一個(gè)小寫字母
.*[A-Z] 表示真?zhèn)€字符串中必須包含一個(gè)大寫字母
總結(jié)
以上是生活随笔為你收集整理的正则基础学习1 这俩天补上正则全部内容,让你简单的学会正则,欢迎收藏当文档的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有道翻译官如何翻译手机网页(如何评价长沙
- 下一篇: 招才猫直聘如何更换公司