啥是正規表達式就不說了,我們直接來看第一個例子:
我們現在有一串字母組成的字元串 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中的起始位置,第三個.....
是以,傳回的結果都是關于這個找到的唯一的結果的資訊;