web前端之JavaScript正则表达式
来源:互联网 发布:电驴服务器端口 编辑:程序博客网 时间:2024/05/12 15:15
web前端之JavaScript正则表达式
后面有代码:
\d 表示数字\d? ?表示0个或者一个\d+ +表示一个或者多个\d{3} 表示三个\d{3,5} 表示三到五个\d{3,} 表示至少出现3次\d* *表示0到任意个\b 表示单词边界\B 表示非单词边界\bis\b 表示查找“ is ”的. 表示任意字符\ 表示转译http:(\/\/.+\.jpg) 用()进行分组$1 获取其内部东西[]表示或^表示开头$表示结尾g表示全局\d{4}[/-]\d{2}[/-]\d{2}\w 表示一个单词字符字面量:var reg=/\bis\b/g;构造函数:var reg=new RegExp('\\bis\\b','g');修饰符:g:global全文搜索;不添加,搜索到第一个匹配停止i:ignore case忽略大小写,不添加,大小写敏感m:multiple lines多行搜索子符类:'a1b1c1d3f3'.replace(/[abc]/g,'X')字符类取反:'a1b1c1d3f3'.replace(/[^abc]/g,'X')范围类:'a1b1c1d1f1e1asd'.replace(/[a-z]/g,'Q');很多个范围类:'a1b1c1d1f1e1asdABGS123BGJS'.replace(/[a-zA-Z]/g,'Q');在选择多个范围类的时候需要匹配“-”,那就在最后添加“-”就可以了:'2010-07-08'.replace(/[0-9-]/g,'A');预定类:匹配一个 ab+数字+任意字符 的字符串:ab\d.边界:'This is a boy'.replace(/\Bis\b/g,'0')@开始:'@123@abc@'.replace(/^@./g,'Q')@结束:'@123@abc@'.replace(/.@$/g,'Q')多行匹配:'@123@456@789'.replace(/^@\d/gm,'X')量词:\d 表示数字\d? ?表示0个或者一个\d+ +表示一个或者多个\d{3} 表示三个\d{3,5} 表示三到五个\d{3,} 表示至少出现3次\d* *表示0到任意个正则表达式贪婪模式:'12345678'.replace(/\d{3,6}/g,"A");非贪婪模式(后面加一个“?”就可以了):'123456789'.match(/\d{3,5}?/g)分组:'a1b1c1d1'.replace(/[a-z]\d{3}/g,"X")"a1b1c1d1"'a1b1c1d1'.replace(/([a-z]\d){3}/g,"X")"Xd1"或:'AbcdEf'.replace(/Abcd|Ef/g,'X');"XX"'AbcdEfAbabEf'.replace(/Ab(cd|ab)Ef/g,'X');"XX"反向引用:'2016-12-21'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2-$3-$1')"12-21-2016"前瞻(前面一个单词字符后面一个数字):'a2*3'.replace(/\w(?=\d)/g,'X')"X2*3"'a2*34V8'.replace(/\w(?=\d)/g,'X')"X2*X4X8"'a2*34VV'.replace(/\w(?=\d)/g,'X')"X2*X4VV"'a2*34VV'.replace(/\w(?!\d)/g,'X')"aX*3XXX"对象属性:g:global全文搜索;不添加,搜索到第一个匹配停止i:ignore case忽略大小写,不添加,大小写敏感m:multiple lines多行搜索lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置source:正则表达式的文本字符串test方法:var reg1=/\w/;var reg2=/\w/g;reg1.test('a');truereg1.test('$');falsereg2.test('a');truereg2.test('a');falsereg2.test('a');truereg2.test('a');falsewhile(reg2.test('ab')){ console.log(reg2.lastIndex);}exec方法:非全局调用:var reg3=/\d(\w)\d/;var reg4=/\d(\w)\d/g;var ts='1a2b3c4d5e';var ret=reg3.exec(ts);console.log(reg3.lastIndex + '\t' +ret.index+ '\t' + ret.toString());console.log(reg3.lastIndex + '\t' +ret.index+ '\t' + ret.toString());while(ret=reg4.exec(ts)){ console.log(reg4.lastIndex + '\t' +ret.index+ '\t' + ret.toString());}0 0 1a2,a0 0 1a2,a3 0 1a2,a7 4 3c4,c非全局下lastIndex不生效toString()):第一个正则获取的字段,第二个正则中的分组的字段全局下:第一个数:第一次获取到之后的,下一个字符的位置第二个数:从第几个字符后获取到和正则匹配的第三个数:第一个正则获取的字段,第二个正则中的分组的字段字符串对象方法:var reg3=/\d(\w)\d/;var reg4=/\d(\w)\d/g;var ts='1a2b3c4d5e';var ret=ts.match(reg3);console.log(ret);console.log(ret.lastIndex + '\t' +ret.index+ '\t');ret=ts.match(reg4);var ret=ts.match(reg4);console.log(ret);console.log(ret.lastIndex + '\t' +ret.index+ '\t');'a1b2c3d4'.split(/\d/g)
0 0