JavaScript之正则表达式详解
什么是正则表达式? 正则表达式:用于匹配字符串中字符组合的模式,在javascript中,正则表达式也是对象 正则表达式的作用? 匹配(验证表单√) 替换(过滤敏感词) 提取(从字符串中提取特定成分) 创建正则表达式的两种方法 方法一:构造函数 方法二:字面量
//方法一
var regexp = new RegExp(/123/); //正则表达式里面不需要加引号
console.log(regexp); // /123/
//方法二
var rg=/123/;
console.log(rg); // /123/
test()方法,检查正则表达式是否符合规范,返回值为布尔值
console.log(rg.test('abc')); //false
正则表达式预定义类 什么是预定义类? 预定义类指的是某些常见模式的简写方式 a. \d——>[0-9] b. \D——>非[0-9] c. \w——>[A-Za-z0-9_] d. \W——>非[A-Za-z0-9_] e. \s——>[\t\r\n\v\f] (空格,换行,制表) f. \S——>非空格,换行,制表
var reg1 = /\d/;
console.log(reg1.test(0123)); //true
console.log(reg1.test('afaf')); //false
var reg2 = /\D/;
console.log(reg2.test('ac;adk')); //true
console.log(reg2.test(14124)); //false
var reg3 = /\s/;
console.log(reg3.test(' ')); //true
console.log(reg3.test('ad')); //false
正则表达式中的特殊字符 边界符:^ (以什么开始)$ (以什么结束) 字符类:[] (表示有一系列的字符可供选择,只要匹配其中一个就可以了) 范围符:[-] (从哪到哪) 取反:^ 优先级:{}
var rg = /abc/; //只要包含有'abc'字符串的都返回true,可以不连续
console.log(rg.test('adaaaaaabcad')); //true
console.log(rg.test('askfhlafjla')); //false
var rg1 = /^ki/; //以'ki'开头的字符串都返回true
console.log(rg1.test('ki')); //true
console.log(rg1.test('k1i123')); //false
var rg2 = /^jisoo$/; //必须是'jisoo'才能返回true
console.log(rg2.test('jisoo')); //true
console.log(rg2.test('jennie')); //false
console.log(reg.test('blackpinkjisoorose')); //false
var rg3 = /[abc]/; //只要包含有a或b或c的字符都返回true
console.log(rg3.test('qao')); //true
console.log(rg3.test('qiq')); //false
var rg4 = /^[abc]$/; //字符串里只有一个a或一个b或一个c才返回true
console.log(rg4.test('c')); //true
console.log(rg4.test('ca')); //false
var rg5 = /[a-z]/; //有a~z任意一个小写字母都可以返回true
console.log(rg5.test('afasgfhaiufhalhc;;;;;ai')); //true
console.log(rg5.test('AGKGUKYYGTK')); //false
var rg6 = /^[a-zA-Z0-9]$/; //有a-z或A-Z或0-9里任何一个字符都返回true
console.log(rg6.test('9')); //true
console.log(rg6.test('aa')); //false
var rg7 = /^[^a-zA-Z0-9]$/; //有a-z或A-Z或0-9里任何一个字符就返回false
console.log(rg7.test('+')); //true
console.log(rg7.test('a')); //false
var rg8 = /^abc{3}$/; //只是让c重复三次才返回true
console.log(rg8.test('abccc')); //true
console.log(rg8.test('abcc')); //false
var rg9 = /^(abc){3}$/; //把abc重复3次
console.log(rg9.test('abcabcabc')); //true
console.log(rg9.test('aaabbbccc')); //false
正则表达式中的量词符 a. *(重复零次或更多次) b. +(重复一次或更多次) c. ?(重复零次或一次) d. {n}(重复n次) e. {n,m}(重复n到m次)
var reg1 = /^a*$/; //让前面的a这个字符重复0次或更多次
console.log(reg1.test('')); //true
console.log(reg1.test('aa')); //true
console.log(reg1.test('aaa')); //true
console.log(reg1.test('aaaa')); //true
var reg2 = /^a+$/; //让前面的a这个字符重复1次或更多次
console.log(reg2.test('')); //false
console.log(reg2.test('aa')); //true
console.log(reg2.test('aaa')); //true
console.log(reg2.test('aaaa')); //true
var reg3 = /^a?$/; //让前面的a这个字符重复0次或1次
console.log(reg3.test('')); //true
console.log(reg3.test('a')); //true
console.log(reg3.test('aaa')); //false
console.log(reg3.test('aaaa')); //false
var reg4 = /^a{3}$/; //让前面的a这个字符重复3次
console.log(reg4.test('')); //false
console.log(reg4.test('a')); //false
console.log(reg4.test('aaa')); //true
console.log(reg4.test('aaaa')); //false
var reg5 = /^a{4,}$/; //让前面的a这个字符重复4次或多次
console.log(reg5.test('')); //false
console.log(reg5.test('aaaaaaaaaaa')); //true
console.log(reg5.test('aaa')); //false
console.log(reg5.test('aaaa')); //true
var reg6 = /^a{4,6}$/; //让前面的a这个字符重复4次到6次
console.log(reg6.test('')); //false
console.log(reg6.test('aaaaaaaaaaa')); //false
console.log(reg6.test('aaaa')); //true
console.log(reg6.test('aaaaa')); //true
console.log(reg6.test('aaaaaa')); //true