匹配指定字符
只有匹配到hello才能返回true
let r: RegExp = /hello/;
console.log(r.test('hello')); // true
横向模糊匹配
横向模糊匹配,一个正则可匹配的字符串的长度是固定的,可以是多种情况。
const reg:RegExp = /ab{2,5}c/g; // 第一个:a 第二个:2-5个b 第三个c
const str:String = 'abc abbc abbbc abbbbc abbbbbc abbbbbbc'; // 第一 和最后一不会被匹配
console.log(str.match(reg)); // (4) ["abbc", "abbbc", "abbbbc", "abbbbbc"]
纵向模糊匹配
纵向模糊匹配,一个正则匹配的字符,具体到某个字符时候,它可以不是某个确定的字符,可以有多中可能
const reg: RegExp = /a[123]b/g; // 第一个:a 第二个:1-3 第三个:b
const str:String = 'a0b a1b a2b a3b a4b'; // 头尾不会被匹配到
console.log(str.match(reg)); // (3) ["a1b", "a2b", "a3b"]
贪婪匹配
g全局匹配,只要匹配到的都会返回
const reg: RegExp = /\d{2,5}/g; // g全局匹配
const str:String = '1 12 123 1234 12345 123456';
console.log(str.match(reg)); // (5) ["12", "123", "1234", "12345", "12345"]
惰性匹配
惰性匹配,只要匹配到就返回。以下例子,虽然2-5次都行,但2个就够的时候,它将不在尝试
const reg: RegExp = /\d{2,5}?/g; // ?惰性匹配,因为符合2 所有下面全部输出都是2位的
const str:String = '12 123 1234 12345 123456';
console.log(str.match(reg)); // (9) ["12", "12", "12", "34", "12", "34", "12", "34", "56"]
分支匹配
或者的意思 使用符号 |
const reg: RegExp = /my | you/gs; // 匹配的字符满足一个条件就行
const str:String = 'how are you';
console.log(str.match(reg));
案例 - 10进制
const reg: RegExp = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g; // 需要先查找6位的再查找3为的。
const str: String = '#aaa #af0 #123435 #abc1234 #a1';
console.log(str.match(reg)); // (4) ["#aaa", "#af0", "#123435", "#abc123"]