正则表达式 RegExp

正则表达式 RegExp
其实与 perl类似,亦即和 php 中的正则类似
两种方式创建正则表达式式
1.用字面量
  [var] 正则变量名 = "/正则字符串/[flag]"
  如下:
  var patern = "/js/img";

2.用 RegExp 构造函数
    [var] 正则变量名 = new RegExp("正则字符串", "flag")
 var ppttern2 = new RegExp("js", "img")

注意:转义时,字面量的与构造的区别,如为了表示 "/",字面量写面"/",构造中的

字符得写成 "\/"形式

原字符串.replace(正则表达式字符串,用于替换的字符串);
注意:此方法名只用用双引号,不能用“/”,与 exec(),test()不同
如:
    var pattern = "lin";
    var str = "lin3615";
    var strs = str.replace(pattern, "ok");
    alert(strs);
此时的 模式一定是如构造中的正则字符串,不加上分隔符号,在引号里面的全部当

做正则字符串的,如上例,不能写成 var pattern = "/lin/"

两个主要方法 exec(), test()
注意:正则表达式不能在两边用双引号,与replace不同
exec():接受一个参数,即要应用的字符串,然后返回包含第一个匹配项的信息的数

组,或者在没有匹配项的情况下返回 null。返回的数据虽然是 Array  实例,但包

含两个额外实例:index,input,其中,index 表示匹配字符串的位置,input 表示应

用于正则表达式的字符串,一定要有正则匹配才行,不然会出错。数组第一项是整个

模式匹配的字符串,其它项则是与模式中捕获组匹配的字符串(如果没有捕获组,则

只有一项)
    var str = "linyuanlong";
    var pattern = /yuan/;
    var pattern2 = /yuanx/;
    var arr = pattern.exec(str);
    var arr2 = pattern2.exec(str);

    alert(arr.index); // 3
    alert(arr2); // null

====================================================
    var text = "mon and dad and baby";
    var pattern = /mon( and dad( and baby)?)?/gi;
    var str = pattern.exec(text);
    // alert(str[0]); // mon and dad and baby
    //alert(str[1]); // and dad and baby
    //alert(str[2]); // and bady

此时,如果在正则中没有设置 g 时,则返回一直是第一个匹配项,而设置了 g 时,

再次调用时,则一直会向下匹配:
    var text = "cat, bat, fat";
    var pattern = /.at/;
    var s = pattern.exec(text);
    var ss = pattern.exec(text);
    alert(s); // cat
    alert(ss); // cat

=======================================

var text = "mon and dad and baby lin ok yes";
var pattern = new RegExp("mon (and dad( and baby)?)?( lin (ok yes)?)?");
var str = pattern.exec(text);
document.write("str[0]: "+str[0] + "<br />");
document.write("str[1]: "+str[1] + "<br />");
document.write("str[2]: "+str[2] + "<br />");
document.write("str[3]: "+str[3] + "<br />");
document.write("str[4]: "+str[4] + "<br />");
document.write("str[5]: "+str[5] + "<br />");

str[0]: mon and dad and baby lin ok yes
str[1]: and dad and baby
str[2]: and baby
str[3]: lin ok yes
str[4]: ok yes
str[5]: undefined

===========================
    var text = "cat, bat, fat";
    var pattern = /.at/g;
    var s = pattern.exec(text);
    var ss = pattern.exec(text);
    alert(s); // cat
    alert(ss); // bat

test():用于测试是否与指定的模式匹配,如果是则返回 true,否则为 false
    var text = "cat, bat, fat";
    var pattern = /.at/;
    var s = pattern.test(text);

    alert(s); // true



原文地址:https://www.cnblogs.com/lin3615/p/3641744.html