正则表达式

233 阅读2分钟

1、常用的表达式

[a-z] :查找任何从小写 a 到小写 z 的字符
[A-Z] :查找任何从大写 A 到大写 Z 的字符
[0-9] :查找任何从 0 至 9 的数字
[abc] :查找括号内的任意一个字符
[^abc]:查找除了括号内的任意字符

2.常用的元字符(特殊字符)

\w :匹配数字、字母、下划线
\W :匹配非数字、字母、下划线
\d :匹配数字0-9
\D :匹配非数字
\s :匹配空白字符(空格、换行)
\S :匹配非空白字符
\n :匹配换行符

3.常用的限定符

*	匹配前面的子表达式零次或多次
+	匹配前面的子表达式一次或多次
?	匹配前面的子表达式零次或一次
{n}	匹配确定的 n 次
{n,}	至少匹配n 次
{n,m}	最少匹配 n 次且最多匹配 m 次

4.修饰符

i:不区分大小写
g:  全局匹配,不匹配的第一个停止匹配
m:执行多行匹配

二、语法

reg.test(string)    //返回值为布尔值true匹配,false不匹配

String类中可以支持正则的方法:

1.1 search() 返回匹配字符串的下标,否则返回-1
    var str = "hello kgc";
    console.log(str.search(/kgc/)); // 6
    console.log(str.search(/KGC/)); // -1
    console.log(str.search(/KGC/i));// 6
    
2.1 match 如果没有找到任何匹配的文本, 返回 null。否则,它将返回一个数组
    var str = "1 and 2 and 3";
    console.log(str.match(/\d/));// '1'
    console.log(str.match(/kgc/));// null
    console.log(str.match(/\d/g));// ["1", "2", "3"]
    
3.1 replace返回一个新的字符串
    var str = "hello huyang";
    console.log(str.replace(/huyang/, "kgc")); //hello kgc
    var str = "hello huyang, How are you?huyang";
    console.log(str.replace(/huyang/g, "kgc")); //hello kgc, How are you?kgc

4.1 split返回一个字符串数组
    console.log("hello".split(""));//["h", "e", "l", "l", "o"]
    console.log("hello".split("", 3));//["h", "e", "l"]

三、示例

1.匹配字母。

var str="abc";
var reg1=/[a-z]/;   
var reg2=/[A-Z]/;
console.log(reg1.test(str));  //true
console.log(reg2.test(str));  //flase

var str = "sgfhdfGIYYjhj";
var reg = /^[a-zA-Z]+$/;   //一次或多次 "+"
console.log(reg.test(str));//true
  1. 验证表单

     let user = document.querySelector('#user')
     let user_p = document.querySelector('.user_p')
     user.onblur=function(){
        reg=/^[\w\u4e00-\u9fa5]{6,12}$/;
        if(user.value==''){
             user_p.innerHTML='不能为空';
             return false;
         }
         else if(!reg.test(user.value)){
             user_p.innerHTML='长度不在范围内或者存在非法字符'
             return false;
         }
         else{
             user_p.innerHTML='<i class="ok"></i>正确'
             return true
         }
     }