RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

语法:

1.new RegExp(pattern, attributes);

参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配.

g (即global的意思表示全文查找) 
i (即ignore的意思表示忽略大小写) 
m (即multiple rows的意思表示多行查找) 

直接量语法

/pattern/attributes

下面上例子:

  1. re =new RegExp("d");//最简单的正则表达式,将匹配字母d  
  2. re=new RegExp("d","i");//第二个参数,表示匹配时不分大小写 
  3. var re = new RegExp("d","gi");//匹配所有的d或D
  4. 直接量的语法:var re=/d/gi; 

  test方法:

var str="we";//可以看作我们填写表单的用户姓名
               var re=/we/;//这个正则表达式可以看作是是我预先设定好的
               console.log(re.test(str));//true

               str="We";
               console.log(re.test(str));//false

               re=/we/i;
               console.log(re.test(str));//true

               str = "I am a beautiful girl"; 
               re=/be/;
               console.log(re.test(str));//true

               re=/^be/;//^表示以be开头
               console.log(re.test(str));//false

               re=/^be$/;//$表示以be结束
               console.log(re.test(str));//false

               str="be";
               re=/^be$/;
               console.log(re.test(str));//true

               re=/\s/;//表示空格
               str="wo wo";
               console.log(re.test(str));//true

               re=/[abc]/;//表示字符串里有abc里的任意一个或者多个字母都行不要求顺序
               str="a";
               console.log(re.test(str));//true

               str="dbad";
               console.log(re.test(str));//true

               re=/^[abc]/;//表示以abc任意一个字母或者多个字母开头都行
               str="adf";
               console.log(re.test(str));//true

               re=/[^abc]/;//查找任何不在方括号之间的字符即只有字符串里有不是abc的字符都是正确的
               str="abd";
               console.log(re.test(str));//true

               re=/[1-9]/;查找字符串里有1-9任意一个或者多个数字的
               str="ad1";
               console.log(re.test(str));//true

               re=/(red|blue|green)/;//表示查找的字符串里有redbluegreen一个或者多个字符串
               str="redblue";
               console.log(re.test(str));//true

               str="redblueddf";
               console.log(re.test(str));//true

               //以上方法是test方法。返回true或false

match方法:

var str="Hellooo World! Hello W3School!"; 
               var re=/o+/g;匹配包含一个或者多个o的字符串
               console.log(str.match(re));//["ooo", "o", "o", "oo"]

               var str="Hellooo_ World12! Hello W3School!"; 
               var re=/\w+/g;//匹配所有的单词字符
               console.log(str.match(re));//["Hellooo_", "World12", "Hello", "W3School"] 单词字符包括:a-z A-Z 0-9 以及下划线

               var str="Give 100%!";
               var re=/\W/g;//\W元字符用于查找非单词字符 
               console.log(str.match(re));//[" ", "%", "!"]

               var str="Give";
               var re=/\W/g;
               console.log(str.match(re));//null

               var str="Give 100%!"; 
               var re=/\d/g;//表示查找所有的数字字符
               console.log(str.match(re));//["1", "0", "0"]

               var str="Give 100%!";
               var re=/\D/g;//表示匹配所有的非数字字符
               console.log(str.match(re));//["G", "i", "v", "e", " ", "%", "!"]

               var re=/\S/g;//匹配所有的非空格字符

               var re=/\b/;//匹配所有的边界字符

               var str="moon"; 
               var re=/\bm/;//表示匹配以m开头的字符
               console.log(str.match(re));//["m", index: 0, input: "moon"]

               var str="moon"
               var re=/oo\b/;//表示以00结束的字符
               console.log(str.match(re));//null

               var str="moon"
               var re=/oon\b/;//表示以00n结束的字符
               console.log(str.match(re));//["oon", index: 1, input: "moon"]

               var str="Visit W3School"; 
               var re=/\bW3/g;//表示所有以W3开始的字符
               console.log(str.match(re));//["W3"]

               var re=/\B/;//表示非边界字符

               //以上采用的是match方法返回的是数组找不到的话返回的是null

exec方法及与match的比较

var str = "Visit W3School, W3School is a place to study web technology."; 
               var re =/W3School/g;
               console.log(re.exec(str));//["W3School", index: 6, input: "Visit W3School, W3School is a place to study web technology."]

                console.log(str.match(re));//["W3School", "W3School"]

               var str = "Visit W3School, W3School is a place to study web technology."; 
               var re = /W3School/g;
               var result;

               while ((result = re.exec(str)) != null)  {
                console.log(result)
               
                }//["W3School", index: 6, input: "Visit W3School, W3School is a place to study web technology."]
                 // ["W3School", index: 16, input: "Visit W3School, W3School is a place to study web technology."]

在调用非全局的 RegExp.exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。

但是在全局调用的时候二者就不一样了。match方法输入的结果是:["W3School", "W3School"]  而exec方法输出的["W3School", index: 6, input: "Visit W3School, W3School is a place to study web technology."]没有全部匹配出来。

当用while循环语句时:输出的是

//["W3School", index: 6, input: "Visit W3School, W3School is a place to study web technology."]
// ["W3School", index: 16, input: "Visit W3School, W3School is a place to study web technology."]

因此我们可以这么说,在循环中反复地调用 exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。

//正则表达式实例的属性
var re = /[a-z]/i;
console.log(re.source);//[a-z]

//n+ 匹配任何包含至少一个 n 的字符串。

//对至少一个 "o" 进行全局搜索:
var str="Hellooo World! Hello W3School!";
var patt1=/o+/g;
console.log(str.match(patt1));//["ooo", "o", "o", "oo"]

// 对至少一个单词字符进行全局搜索
var str="Hello World! Hello W3School!";
 var patt1=/\w+/g;
console.log(str.match(patt1));//["Hello", "World", "Hello", "W3School"]

 

//n* 匹配任何包含零个或一个 n 的字符串。

//对 "1" 进行全局搜索,包括其后紧跟的零个或一个 "0":
         var str="1, 100 or 1000?";
         var patt1=/10?/g;
         console.log(str.match(patt1));//["1", "10", "10"]

 

//n{X} 匹配包含 X 个 n 的序列的字符串。

//对包含四位数字序列的子串进行全局搜索:
        var str="100, 1000 or 10000?";
        var patt1=/\d{4}/g;
        console.log(str.match(patt1));//["1000", "1000"]

 

//n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。

//对包含三位或5位数字序列的子串进行全局搜索:
        var str="100, 1000 or 10000? 100000";
        var patt1=/\d{3,5}/g;
        console.log(str.match(patt1));//["100", "1000", "10000", "10000"]

 

n{X,} 匹配包含至少 X 个 n 的序列的字符串。

//对包含至少三位数字序列的子串进行全局搜索:
       var str="100, 1000 or 10000?";
       var patt1=/\d{3,}/g;
       console.log(str.match(patt1));//["100", "1000", "10000"]

 

 

 var re = /^[a-zA-z]\w{3,15}$/;// 表示以小写a到z开始或者大写A到Z开始也就是以字母开始后面跟着的是单词(单词包括字母数字和下划线)单词的长度为3到15位