欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript正則表達(dá)式基礎(chǔ)知識(shí)入門

 更新時(shí)間:2015年04月20日 08:59:50   投稿:hebedich  
很長(zhǎng)時(shí)間沒(méi)看正則表達(dá)式了,碰巧今天用到,溫故知新了一把,這里記錄下來(lái),分享給大家,都是些基礎(chǔ)的知識(shí),重點(diǎn)給大家講解的是正則表達(dá)式中4種常用的方法,50% 的舉一反三練習(xí)中的原創(chuàng)。

正則表達(dá)式的好處到底在哪里呢,下面我們先進(jìn)行個(gè)了解:
我們用js中處理字符串的方法,寫出取出字符串中數(shù)字的函數(shù):

 var str='dgh6a567sdo23ujaloo932';
   function getNumber(obj){
     var arr=[];
     for (var i = 0; i < obj.length; i++) {
       if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
           arr.push(obj.charAt(i));
         }
     }
     return arr;
   };
   console.log(getNumber(str));  //["6", "5", "6", "7", "2", "3", "9", "3", "2"]

上面的方法我們?nèi)〕隽俗址械臄?shù)字,但是我們不滿意,我們需要的是['6','567','23','932']的形式,對(duì)函數(shù)進(jìn)行改造:

function getNumber(obj){
    var arr=[];
    var temp='';
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          temp+=obj.charAt(i);//現(xiàn)將相鄰的數(shù)字連接起來(lái)
        }
        else{ //每當(dāng)連接的數(shù)字?jǐn)嚅_時(shí),就在這執(zhí)行
          if (temp) {
            arr.push(temp);
            temp='';
          }
        };
    }
    if (temp) { //這里的作用是為了顯示最后數(shù)字的,原因不想解釋
            arr.push(temp);
            temp='';
          }
    return arr;
  };

那我們用正則表達(dá)式的方式來(lái)解決這個(gè)函數(shù)實(shí)現(xiàn)的功能:

function getNumber2(obj){
    var arr=[];
    var re=/\d+/g;
    arr.push(obj.match(re));
    return arr;
  };

完整的看看程序的運(yùn)行結(jié)果吧:

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'>
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6a567sdo23ujaloo932';
  /*function getNumber(obj){
    var arr=[];
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          arr.push(obj.charAt(i));
        }
    }
    return arr;
  };*/
  function getNumber(obj){
    var arr=[];
    var temp='';
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          temp+=obj.charAt(i);//現(xiàn)將相鄰的數(shù)字連接起來(lái)
        }
        else{ //每當(dāng)連接的數(shù)字?jǐn)嚅_時(shí),就在這執(zhí)行
          if (temp) {
            arr.push(temp);
            temp='';
          }
        };
    }
    if (temp) { //這里的作用是為了顯示最后數(shù)字的,原因不想解釋
            arr.push(temp);
            temp='';
          }
    return arr;
  };
  function getNumber2(obj){
    var arr=[];
    var re=/\d+/g;
    arr.push(obj.match(re));
    return arr;
  };
  console.log(getNumber(str));
  console.log(getNumber2(str)); 
};
</script>
<body>
</body>
</html>

從上面的例子我們可以看出來(lái),正則表達(dá)式的方法有著同樣的效果,但是代碼更加簡(jiǎn)短,更加高效,這就是正則的好處啊
正則是為了更高效的處理字符串而產(chǎn)生的,和字符串處理方法一樣,只是更加高效、簡(jiǎn)潔(正則只可以處理字符串)

下面我們來(lái)系統(tǒng)的學(xué)習(xí)一下,正則的幾個(gè)常用的方法:

在這之前說(shuō)一下正則的寫法,正則和其他對(duì)象array()、object()、Date()等都一樣,都有初始化的方式
var re=/這里面要寫匹配的東西,不寫的話就是注視符號(hào)了/; //這樣的就是正則對(duì)象的簡(jiǎn)單創(chuàng)建,后面文章我都是直接用它來(lái)代替的
var re=new RegExp(); //這樣的創(chuàng)建方式也可以的,大家懂得,只是和簡(jiǎn)寫不同的是參數(shù)傳遞有點(diǎn)不一樣

(1)test

含義:正則去匹配字符串,當(dāng)匹配成功返回true,反之,返回false;
語(yǔ)法:re.test(字符串);
先說(shuō)點(diǎn)轉(zhuǎn)義字符吧 :
/s空格 /S非空格 /d數(shù)字 /D非數(shù)字 /w字符(字母、數(shù)字、下劃線) /W非字符
舉個(gè)例子:判斷一個(gè)字符串是否都是數(shù)字

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6a567sdo23ujaloo932';
  var str2='123456';
  function allNumber(obj){
    var re=/\D/;//定義正則對(duì)象匹配非數(shù)字,只要有不是數(shù)字的就是匹配結(jié)束返回結(jié)果
    if (re.test(obj)) {
      alert('不全是數(shù)字');
    }
    else{
      alert('全是數(shù)字');
    };
  };
  allNumber(str);
  allNumber(str2);

};
</script>
<body>
</body>
</html>

(2)search

含義:正則去匹配字符串,當(dāng)匹配成功返回匹配成功的位置,反之,返回-1;和字符串處理方法中的indexof()功能一樣
語(yǔ)法:字符串.search(re);
[color=Red]注意:正則中默認(rèn)是區(qū)分大小寫的,要想讓其不區(qū)分大小寫的就是加標(biāo)識(shí)i;[/color]
例子,不區(qū)分大小寫的去正則匹配字符串中某個(gè)字符

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6b567sdo23ujaloo932';
  function searchStr(obj){
    var re=/B/i;//定義正則對(duì)象匹配b字符,不區(qū)分大小寫
    alert(obj.search(re));  
  };
  searchStr(str);
};
</script>
<body>
</body>
</html>

(3)match

含義:正則去匹配字符串,當(dāng)匹配成功返回匹配成功的數(shù)組,反之,返回Null
語(yǔ)法:字符串.match(re);
[color=Red]注意:正則中默認(rèn)是只要是匹配成功就立刻結(jié)束返回相應(yīng)的值,不會(huì)繼續(xù)匹配。若想查找全部就需要加表示g(全局匹配)[/color]
例子:匹配字符串中的連續(xù)數(shù)字并將其存入一個(gè)數(shù)組中(連續(xù)的數(shù)字作為數(shù)組用的一項(xiàng))

程序中的“+”是匹配至少出現(xiàn)一次,為什么要這樣做呢?
前面我們提過(guò)“正則中默認(rèn)是只要是匹配成功就立刻結(jié)束返回相應(yīng)的值”,那么在字符串中匹配到一個(gè)數(shù)字時(shí)就會(huì)結(jié)束,將一個(gè)數(shù)字返回?cái)?shù)組,這時(shí)候我們需要的是用g來(lái)讓它匹配每一個(gè)元素。
有沒(méi)有發(fā)現(xiàn)連續(xù)的數(shù)字沒(méi)有確定的個(gè)數(shù),用“+”就可以滿足動(dòng)態(tài)的數(shù)字個(gè)數(shù)。

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6b567sdo23ujaloo932';
  function searchStr1(obj){
    var re=/\d/;  
    return obj.match(re);
  };
  function searchStr2(obj){
    var re=/\d/g;  
    return obj.match(re);
  };
  function searchStr3(obj){
    var re=/\d\d/g;//全局匹配2位數(shù)  
    return obj.match(re);
  };
  function searchStr4(obj){
    var re=/\d+/g;  
    return obj.match(re);
  };
  console.log(searchStr1(str));
  console.log(searchStr2(str));
  console.log(searchStr3(str));
  console.log(searchStr4(str));

};
</script>
<body>
</body>
</html>

(4)replace

含義:正則去匹配字符串,當(dāng)匹配成功的字符串被新的字符串所替代
語(yǔ)法:字符串.replace(re);
例子:將字符串中的所有的a都替換成b

<!DOCTYPE>
<html>
<head>
 <meta charset='utf-8'> 
 <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
 var str='daah6b5a7sdo23ujaloo932';
 function replaceStr(obj){
  var re=/a/g; //全局匹配a
  return obj.replace(re,'b');
 };
 console.log(replaceStr(str));
};
</script>
<body>
</body>
</html>

暫時(shí)寫到這里后續(xù)跟新。。。

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • JavaScript實(shí)現(xiàn)移動(dòng)小精靈的案例代碼

    JavaScript實(shí)現(xiàn)移動(dòng)小精靈的案例代碼

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)移動(dòng)小精靈的案例代碼,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • js獲取多個(gè)tagname的節(jié)點(diǎn)數(shù)組

    js獲取多個(gè)tagname的節(jié)點(diǎn)數(shù)組

    寫了個(gè)獲取多個(gè)tagname節(jié)點(diǎn)集合的小方法。類似于jQuery的$(‘iput,select,textarea’,'#form’)的效果,返回是按節(jié)點(diǎn)在原有文檔流中的順序返回的
    2013-09-09
  • 使用JavaScript獲取URL中的參數(shù)(兩種方法)

    使用JavaScript獲取URL中的參數(shù)(兩種方法)

    這篇文章主要介紹了使用JavaScript獲取URL中的參數(shù)(兩種方法)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Javascript加載速度慢的解決方案

    Javascript加載速度慢的解決方案

    在網(wǎng)站里面會(huì)加載一些js代碼,統(tǒng)計(jì)啊,百度廣告等等,結(jié)果弄得頁(yè)面加載速度很慢,下面有個(gè)不錯(cuò)的解決方法,大家可以參考下
    2014-03-03
  • 寫的一段拖動(dòng)對(duì)象的代碼

    寫的一段拖動(dòng)對(duì)象的代碼

    寫的一段拖動(dòng)對(duì)象的代碼...
    2007-01-01
  • JSON獲取屬性值方法代碼實(shí)例

    JSON獲取屬性值方法代碼實(shí)例

    這篇文章主要介紹了JSON獲取屬性值方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • js實(shí)現(xiàn)文字列表無(wú)縫滾動(dòng)效果

    js實(shí)現(xiàn)文字列表無(wú)縫滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)文字列表無(wú)縫滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • IE下JS保存圖片的簡(jiǎn)單實(shí)例

    IE下JS保存圖片的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇IE下JS保存圖片的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • JavaScript基于用戶照片姓名生成海報(bào)

    JavaScript基于用戶照片姓名生成海報(bào)

    這篇文章主要介紹了JavaScript基于用戶照片姓名生成海報(bào),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • JSON.stringify(遞歸)與?JSON.parse(有限狀態(tài)自動(dòng)機(jī))的實(shí)現(xiàn)代碼

    JSON.stringify(遞歸)與?JSON.parse(有限狀態(tài)自動(dòng)機(jī))的實(shí)現(xiàn)代碼

    這篇文章主要介紹了JSON.stringify(遞歸)與?JSON.parse(有限狀態(tài)自動(dòng)機(jī))的實(shí)現(xiàn),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08

最新評(píng)論