js 正則


元字符

.      匹配除了換行符以外的任意字符
\w   匹配 字母或數字或下划線或漢字等      [a-z0-9A-Z_]  (只考慮英文的話效果一樣)
\d   表示數字的意思,相反,\D表示非數字
 
 
限定符:
*        重復零次或多次
+        重復一次或多次
?        重復一次或多次
{n}    重復n次
{n,}   重復n次或更多次
{n,m}   重復n到m次
 

空白:

\f匹配換頁符,\n匹配換行符,\r匹配回車,\t匹配制表符,\v匹配垂直制表符。
\s匹配單個空格,等同於[\f\n\r\t\v]
 

字符集合

[abc]   表示a或者b或者c中的任意一個字符
^[a-zA-Z0-9] 匹配已數字字母開頭的字符串
 
一般 來說,當“^”出現在 “[]”內時就被視做否定運算符;而當“^”位於“[]”之外,或沒有“[]”時,則應當被視做定位符
 
非貪婪  ?
a.*?b匹配 最短的,以a開始,以b結束的字符串
 

正則表達式的修飾符

全局匹配,修飾符g   /..../g
不區分大小寫,修飾符i   /...../i
行首行尾,修飾符m   /....../m
 
demo:
            var $name = "time";
            var reg = new RegExp("\\b"+$name+"\\b\|\\bkitty\\b","g"); //new RegExp 的方法可以用$name變量值,但對\b這樣的邊界符要轉義 \\b
            var str = "time is one datimey time kitty"
            alert(str.replace(reg,""))

 

去除特殊字符串
  function clearString(s){
                var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()&;|{}【】‘;:”“'。,、?]")
                var rs = "";
                for (var i = 0; i < s.length; i++) {
                    rs = rs+s.substr(i, 1).replace(pattern, '');
                }
                return rs;
            }
           var h="#sdfsd///////fsdf/"
           var t=clearString(h)
           console.log(t)

 

  function clearString(s){
                var pattern = /[\s.<>/?~!@#¥……&*()&;|{}【】‘;:”“'。,、?.<>\/\[\]?~!@#¥……&*()&;|{}【】‘;:”“'。,、?]/g
               var rs= s.replace(pattern,"")
                return rs;
            }
           var h="dfghdfg df  gh dfghdf    [] \     / > gh"
           var t=clearString(h)
            $("html body").append(t)
           console.log(t)

 

正則模版匹配

    var pp = {
        init:"替換的字符串",
        reg:/{.+?}/g, /*+?非貪婪模式*/
        pri:function () {
            var k = this.init.match(this.reg).map(function (a) {
                return a.slice(1, -1);
            });
            console.log(k)
        },
        remove_tag:function (str) {
            str=str.replace(/<\/?[^>]*>/g, "")
            console.log(str);//去掉所有的html標記
        },
        remove_s:function (str) {
            str=str.replace(/(^\s+)|(\s+$)/g, "")
            console.log(str)/*去除前后空格*/
        },
        remove_1:function (str) {
            str = str.replace(/\s/g, "")
            console.log(str)/*去除所有空格*/
        },
        get_tag_html:function(str){
            reg=/<ul>[\s\S]*?<\/ul>/gi
            console.log(str.match(reg))
        }/*獲得指定標簽的內容*/,
        remove_tag1:function(str){
            str=str.replace(/<ul[\s\S]*?>|<\/ul>/g, "")
            console.log(str)
        }/*去除指定標簽*/,
        pri3:function (arr) {
            var str = this.init
            var len = str.match(this.reg).length
            console.log(str.match(this.reg))
            for (var i = 0; i < len; i++) {
                var t = this.reg.exec(str)
                console.log(t)
                var tmp = t.toString().slice(1, -1);
                if (arr[tmp]) {
                    str = str.replace(t.toString(), arr[tmp])
                }

            }
            console.log(str)
        }/*替換{}中的字符串*/
    }
    pp.init = "開始{$age}中sdfasdf{$name}間從{然后后來}前"
    pp.pri3({"$name":"_name_", "$age":"_age_"})
    pp.remove_tag("<div>asdfasdfasdf<span>a12<33>4456</span></div>")
    pp.get_tag_html("<ul>asdfasdfasdf</ul><ul>21</ul>")
    pp.remove_tag1("<ul class='sd'>232323<ul>asdf</ul></ul><ul>ddd</ul>")

 輸出

開始_age_中sdfasdf_name_間從{然后后來}前

 

 replace function

var str = "他今年22歲,她今年20歲,他的爸爸今年45歲,她的爸爸今年44歲,一共有4人"

    function test($1) {

        var gyear = (new Date()).getYear() - parseInt($1) + 1;

        return $1 + "(" + gyear + "年出生)";

    }

    var reg = new RegExp("(\\d+)歲", "g");
    var reg2=/(\d+)歲/g    /*所以有時*/

    var newstr = str.replace(reg, test);

    alert(str);

    alert(newstr);

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM