JavaScript_正则表达式

规则
开头结尾
    "^The":表示所有以"The"开始的字符串("There","The cat"等);
    "of despair$":表示所以以"of despair"结尾的字符串;

重复
    "ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);
    "ab+":表示一个字符串有一个a后面跟着至少一个b或者更多;
    "ab?":表示一个字符串有一个a后面跟着零个或者一个b;
    "a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。

    "ab{2}":表示一个字符串有一个a跟着2个b("abb");
    "ab{2,}":表示一个字符串有一个a跟着至少2个b;
    "ab{3,5}":表示一个字符串有一个a跟着3到5个b。

    "(b¦cd)ef":表示"bef"或"cdef";
    "^.{3}$":表示有任意三个字符的字符串(长度为3个字符)
    "[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");
    "[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");
    "^[a-zA-Z]":表示一个以字母开头的字符串;
    "[0-9]%":表示一个百分号前有一位的数字;

边界
    ^     行开头
    $     行结尾
    \b    单词的边界
    \B    非单词的边界

————————————————————————————————————————————————————————————
注意点
■   "^.$()¦*+?{\" 这些字符前加上转义字符'\'。

————————————————————————————————————————————————————————————
使用示例
● 初始化
    var reCat = new RegExp("cat");
    var reCat = /cat/;//Perl 风格(推荐)

● 分割金额
    var re = new RegExp("(\\d)(\\d{3})(,|\\.|$)");
    m = m.replace(re, "$1,$2$3");

● test  检查指定的字符串是否存在
      var data = "123123";
      var reCat = /123/gi;
      alert(reCat.test(data));  //true
      //检查字符是否存在  g 继续往下走  i 不区分大小写

● exec 返回查询值
       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /cat/i;
       alert(reCat.exec(data));  //Cat

● match  得到查询数组
       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /cat/gi;
       var arrMactches = data.match(reCat)
       for (var i=0;i < arrMactches.length ; i++)
       {
            alert(arrMactches[i]);   //Cat  cat
       }

● search  返回搜索位置  类似于indexof
       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /cat/gi;
       alert(data.search(reCat));  //23

● replace  替换字符  利用正则替换
       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /cat/gi;
       alert(data.replace(reCat,"libinqq"));

● split  利用正则分割数组
       var data = "123123,213,12312,312,3,Cat,cat,dsfsdfs,";
       var reCat = /\,/;
       var arrdata = data.split(reCat);

       for (var i = 0; i < arrdata.length; i++)
       {
            alert(arrdata[i]);
       }


● var reCat = /(mouse){2}/gi; //mousemouse

● 选取子串
    var sToMatch = "#123456789";
    var reNumbers = /#(\d+)/;
    reNumbers.test(sToMatch);
    alert(RegExp.$1); //(反向引用)

● 交换子串
    var sToChange = "1234 5678";
    var reMatch = /(\d{4}) (\d{4})/;
    var sNew = sToChange.replace(reMatch,"$2 $1");
    alert(sNew);

● 多行模式
    var data = " First second\n thind fourth\n fifth sixth";  
    var reCat = /(\w+)$/gm;   
    var arrdata = data.match(reCat);

    for (var i = 0; i < arrdata.length; i++)
    {
        alert(arrdata[i]);
    }

————————————————————————————————————————————————————————————

■ JavaScript replace() 方法
● 去除字符串前后空格
replace(/(^\s*)|(\s*$)/g, "");

● jQuery trim()内部实现
str.replace(/^(\s|\u00A0)+/,'').replace(/(\s|\u00A0)+$/,'');

● 兼容不支持trim()的浏览器
if (!String.prototype.trim){
    String.prototype.trim = function () {
        return this.replace(/(^[\s\n\t]+|[\s\n\t]+$)/g, "");
    }
}

————————————————————————————————————————————————————————————

posted @ 2016-11-04 16:36  Uncle_Nucky  阅读(146)  评论(0编辑  收藏  举报