正则

124 阅读1分钟

正则

  • 正则匹配
/* 正则匹配 */
var reg = /^1[34578]\d{9}$/;
// console.log(reg.test('13667223574'));
var telList = ['021-1234567','021-12345678','021 12345678','(021)12345678'];
var reg1 = /^[(]?\d{3}[-\s)]\d{7,8}$/;
var flag = telList.every(item => reg1.test(item));
console.log(flag);
  • 反向引用
/* 反向引用 */
var  str2 = 'taobao taobao tab dde tab home home home haha';
var reg2 = /\b(\w+)\b\s+\1\b/g;
console.log(str2.match(reg2));//[ 'taobao taobao', 'home home' ]
  • 正向零宽断言 匹配前
/* 正向零宽断言 匹配前 */
var reg3 = /\b\w+(?=ing\b)/g;
var str3 = "I'm singing,while you're dancing";
console.log(str3.match(reg3));//[ 'sing', 'danc' ]
  • 负向零宽断言 匹配后
/* 负向零宽断言 匹配后 */
var reg4 = /(?<=\bre)\w+\b/g;
var str4 = 'reading and rewrite';
console.log(str4.match(reg4));//[ 'ading', 'write' ]
  • 测试
//匹配一个单词 里面出现了q 且它后面跟的字母不是u
var reg5 = /\b\w*q[^u]\w*\b/g; //占位 q
var _reg5 = /\b\w*q(?!u)\w*\b/g;
var str5 = 'benq bequm q qm';
console.log(str5.match(_reg5));//[ 'benq', 'q', 'qm' ]

//匹配三位数字 且后面跟的不能是数字
var reg6 = /\d{3}(?!\d)/g;
var str6 = '123U we123Y Wm1234';
console.log(str6.match(reg6));//[ '123', '123', '234' ]

//匹配不包含连续字符串abc 的单词
var reg7 = /\b((?!abc)\w)+\b/g;
var str7 = '123abc123,deahbc123,abc123';
console.log(str7.match(reg7));//[ '123', '123', '234' ]
//匹配不包含连续字符串abc 的单词
var reg7 = /\b((?!abc)\w)+\b/g;
var str7 = '123abc123,deahbc123,abc123';
console.log(str7.match(reg7));//[ '123', '123', '234' ]

var reg8 = /\.com$/;
console.log(reg8.test('.com'));

// 查找所有边界开头的、 非.svg 前面的
var str9 = 'a.png b.jpg c.gif d.svg';
var reg9 = /\b[a-z](?!\.svg)(?=\.[a-z]{3}\b)/g;
console.log(str9.match(reg9));
// 查找前缀不为 a b c 的后面的项
var _reg9_ = /(?<![abc]\.)[a-z]{3}/g;
console.log(str9.match(_reg9_));

// 查找所有 边界开头的、 .svg 前面的 小写字母。
var _reg9 = /\b[a-z](?=\.svg)/g;
console.log(str9.match(_reg9));

var str10 = '1. 1111; 2. 2222; 3. 3333; 4. 4444。'
//  查找所有 序号 后面的项。
var reg10 = /(?<=\b\d+\.\s+).+?(?=;|。)/g;//[ '1111', '2222', '3333', '4444' ]
var reg10 = /(?<=\b\d+\.\s+).+?[;。]/g;//[ '1111;', '2222;', '3333;', '4444。' ]
console.log(str10.match(reg10));

// 匹配 data-img-url 的地址
var str11 = '<img crossorigin src="https://abcdefg.com" data-img-url="https://test.com">';
var dataUrl = 'data-img-url';//`${dataUrl}`
var reg11 = /(?<=data-img-url=").+?(?=")/g;
console.log(str11.match(reg11));

// 匹配单个数字
var str12 = '5 123 3 45 36 123 1';//5 3 1
var reg12 = /(?<=\s+)\d(?=\s+)|(?<!\d+)\d(?=\s+)|(?<=\s+)\d(?!\d+)/g;
console.log(str12.match(reg12));//[5,3,1]