JavaScript正則表達式

\n 換行符
\s 空格
\S 非空格
\d 數字
\D 非數字
\w 字符(包含字母,數字和下劃線)
\W 非字符

常用的正則表達式匹配:
匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*Email\w+@[az09]+(.[az]+)1,3
網址:[a-zA-z]+://[^\s]*
QQ號:[1-9][0-9]{4,9}
郵政編碼:[1-9]\d{5}
身份證:[1-9]\d{14}|[1-9]\d{17}[1-9]\d{16}x

在正則表達式的使用中常用到:
indexOf 查找

var str ="Hello world!"
alert(str.indexOf("Hello")
alert(str.indexOf("World")
alert(str.indexOf("world")
彈出結果就爲
0
-1
6

substring 獲取子字符串

var str ="hello world"
alert(str.substring(3,6))
彈出
lo w

charAt 獲取某個字符

var str ="hello world"
alert(str.charAt(3))
彈出
l

split 分割字符串,獲取數組

var str="How are you doing today?"

document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))
輸出
How,are,you,doing,today?
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
How,are,you

正則表達式的方法:
1.正則.test(字符串)返回布爾值,用作判斷

var str = 'abcdef';
var re = /b/;     //裏面是個整體,如果是bd則是假
alert(re.test(str));

2.字符串.search(正則)返回匹配成功位置

var str ="abcdef";
var  re =/B/i   //不區分大小寫則加i
alert(str.search(re))
彈出
1

3.str.match(正則)。匹配字符串,成功返回數組,失敗返回null

str.match(/\d+/g)  //g是全劇匹配 +是至少出現一次

4.字符串.replace(正則,新的字符) 。正則匹配,如果成功就把匹配成功的字符替換成新的字符。

var str ="abcdef";
var re =/a/;
alert(str.replace(re,"b"));
彈出
bbcdef

正則表達式的範圍
^寫在正則最前面表示起始必須爲
$寫在正則的最後表示結束必須爲

正則表達式的例子

<title>無標題文檔</title>
<style type="text/css">
textarea{width:300px; height:500px;}
</style>
</head>
<body>
<textarea id="text1"></textarea>
<input type="button" id="btn1" value="轉換" class="box box1 box2"/>
<textarea id="text2"></textarea>
<script>
var str = 'haj123sdk54hask33dkhalsd879';


//在str中找出數字放在數組中
function findNum(str){
    var arr = [];var tmp = '';
    for(var i=0;i<str.length;i++){
        if( str.charAt(i)<='9' && str.charAt(i)>='0' ){
            tmp += str.charAt(i);}
        else{if(tmp){
            arr.push(tmp);tmp = '';
            }
        }
    }
    if(tmp){
        arr.push(tmp);tmp = '';
    }
    return arr;
}
//用正則表達式找到數字放在數組裏
function findNum(str){
    return str.match(/\d+/g);
}

alert(findNum(str));


//幾種簡單的創建數組和對象的方法
var arr=[];
var arr = new Array();
var obj ={};
var obj = new Object();
var re = /a/;
var re = new RegExp('a');


//正則匹配失敗返回布爾值爲0
var str = 'abcdef';
var re = /abd/;     //裏面是個整體,如果是bd則是假
alert(re.test(str));


//\D爲非數字的正則匹配,結果爲0
var str = '37482t9348791'; 
var re = /\D/;
alert(!re.test(str));


//不分大小寫,匹配b返回b的位置
var str = 'abcdef';  
var re = /B/i;
alert(str.search(re));



var oText1 = document.getElementById('text1');
var oText2 = document.getElementById('text2');
var oBtn = document.getElementById('btn1');

//剔除敏感詞
oBtn.onclick = function(){
    var str = oText1.value;
    var re = /公安部|斧子|死亡|服毒身亡/g;
    str = str.replace(re,function(a){
        var num = '';
        for(var i=0;i<a.length;i++){
            num+='*';
        }
        return num;
    });
    oText2.value = str;
}

alert(str);


//把-變成.變成2013.6.7   
//s0爲3- 6- s1是3 6  s2是-
var str = '2013-6-7';
var re = /(\d)(-)+/g;
str = str.replace(re,function($0,$1,$2){
    //alert($0);
    return $1+'.';
})
alert(str);


//正則表達式是的分組處理
var str = 'abc';
var re = /(a)(b)(c)/;
alert(str.match(re));


//[]裏面是或者的關係返回的布爾值爲1
var str = 'abc';
var re = /a[bde]c/;
alert(re.test(str)); 


//^表示排除的意思 返回的布爾值爲0
var str = 'abc';
var re = /a[^bde]c/;
alert(re.test(str));


//[a-z]表示從a到z中都可以。返回的布爾值1
var str = 'abc';
var re = /a[a-z]c/;
alert(re.test(str)); 



//<h3>標題</h3>aaaaa
//替換成標題aaaaa
oBtn.onclick = function(){
    var str = oText1.value;
    var re = /<(\w|\/)[^<]+>/g;
    str = str.replace(re,'');
    alert(str);
}


//匹配開頭爲數字或者結尾是數字的內容替換成空。
oBtn.onclick = function(){
    var str = oText1.value;
    var re = /^\d+|\d+$/g;
    str = str.replace(re,'');
    alert(str);
}


//匹配獨立部分
var str='onetwo';
var re =/two\b/;
alert(re.test(str));

var re = /\w\w/;
var re = /(\w)\1/;
</script>
</body>
</html>

這裏面
\b
/<(\w|\/)[^<]+>/g的用法也不是很清楚希

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章