天天看點

Javascript 正規表達式(一)

啥是正規表達式就不說了,我們直接來看第一個例子:

我們現在有一串字母組成的字元串 str="abcdefghigklmnopqrstuvwxyz"

好了,現在我們想找一下這個字元串str中有沒有字元 "xyz",你可能直接看出在字元串的末尾就是,

但是如果這個字元串特别長,那就不會這麼容易就能看出來了,下面就可以使用正規表達式幫助

我們來找一找;

<script>
          //先定義我們的字元串
          var str="abcdefghijklmnopqrstuvwxyz";

          //定義正則
          var patt=/abc/g;

          //通過match函數傳回我們的結果
          console.log(str.match(patt));
 </script>
           

上面傳回的結果是: ["abc"]   ,沒錯,是一個包含我們搜尋結果的數組;

我們來看看正則的定義: 雙斜線 /  /  是正則的标志,這個就代表正則,

/ / 之間寫我們要找什麼東西,比如 / abc / 就是要找 abc ,

/ /的後面寫的是附加條件,比如上面的  / abc /g ,這個g 就是全局查找的意思,

什麼是全局查找,也就是我們第一次找到了 abc ,但是查找過程不會停止,還會繼續找完整個字元串,

如果不加 g , 那麼找到第一個abc 後就會停止了,後面即便還有 abc 也不會找下去了;

上面簡單了解了正則的一點内容,我們再看看 match( ) 函數,

我們 / abc /g 傳回的結果是包含所有比對結果的數組,這就是match() 函數 在有 g的情況下傳回的結果,

那麼很明顯,如果match( ) 配合的正則沒有g ,那麼傳回的結果就不是包含所有比對結果的數組了,

而是一個有關比對到的結果的相關資訊的數組;

我們看看例子:

<script>
             var str="abcdefghijklmnopqrstuvwxyzabc";
             var patt=/abc/g;
             console.log(str.match(patt));
 </script>
           

上面的代碼傳回的是什麼?  因為是全局的,而 abc 有兩個,是以結果是:["abc", "abc"],一個包含兩個結果的數組;

好的,上面的是全局的結果,我們再試試不是全局的:

<script>
             var str="abcdefghijklmnopqrstuvwxyzabc";
             var patt=/abc/;
             console.log(str.match(patt));
 </script>
           

傳回的結果是 :["abc", index: 0, input: "abcdefghijklmnopqrstuvwxyzabc", groups: undefined] ;

這個數組的第一個元素是找到的字元串,第二個index :0 指的是abc 在字元串str中的起始位置,第三個.....

是以,傳回的結果都是關于這個找到的唯一的結果的資訊;

繼續閱讀