国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript正則表達式基礎知識入門

2019-11-20 12:38:12
字體:
來源:轉載
供稿:網友

正則表達式的好處到底在哪里呢,下面我們先進行個了解:
我們用js中處理字符串的方法,寫出取出字符串中數字的函數:

 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"]

上面的方法我們取出了字符串中的數字,但是我們不滿意,我們需要的是['6','567','23','932']的形式,對函數進行改造:

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);//現將相鄰的數字連接起來        }        else{ //每當連接的數字斷開時,就在這執行          if (temp) {            arr.push(temp);            temp='';          }        };    }    if (temp) { //這里的作用是為了顯示最后數字的,原因不想解釋            arr.push(temp);            temp='';          }    return arr;  };

那我們用正則表達式的方式來解決這個函數實現的功能:

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

完整的看看程序的運行結果吧:

<!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);//現將相鄰的數字連接起來        }        else{ //每當連接的數字斷開時,就在這執行          if (temp) {            arr.push(temp);            temp='';          }        };    }    if (temp) { //這里的作用是為了顯示最后數字的,原因不想解釋            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>

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

下面我們來系統的學習一下,正則的幾個常用的方法:

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

(1)test

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

<!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/;//定義正則對象匹配非數字,只要有不是數字的就是匹配結束返回結果    if (re.test(obj)) {      alert('不全是數字');    }    else{      alert('全是數字');    };  };  allNumber(str);  allNumber(str2);};</script><body></body></html>

(2)search

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

<!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;//定義正則對象匹配b字符,不區分大小寫    alert(obj.search(re));    };  searchStr(str);};</script><body></body></html>

(3)match

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

程序中的“+”是匹配至少出現一次,為什么要這樣做呢?
前面我們提過“正則中默認是只要是匹配成功就立刻結束返回相應的值”,那么在字符串中匹配到一個數字時就會結束,將一個數字返回數組,這時候我們需要的是用g來讓它匹配每一個元素。
有沒有發現連續的數字沒有確定的個數,用“+”就可以滿足動態的數字個數。

<!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位數      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

含義:正則去匹配字符串,當匹配成功的字符串被新的字符串所替代
語法:字符串.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>

暫時寫到這里后續跟新。。。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安泽县| SHOW| 天台县| 衡水市| 七台河市| 马公市| 长宁县| 大兴区| 双辽市| 镇平县| 蕉岭县| 宁远县| 平江县| 扶沟县| 石楼县| 庄河市| 太白县| 杭州市| 井陉县| 水富县| 安丘市| 辽阳市| 衡阳市| 卢龙县| 宁阳县| 望谟县| 浮山县| 汪清县| 潜江市| 屯昌县| 万安县| 桂东县| 石首市| 自治县| 柞水县| 岳池县| 准格尔旗| 中阳县| 公安县| 陕西省| 连云港市|