JavaScript: 正規表達式 RegExp 應用(String, RegExp Method)

JavaScript 的正規表達式可以運用在 字串物件 和 正規表達式物件本身 的方法上:
(還不知道正規表達式怎麼寫可以參考前一篇:JavaScript: 正規表達式 RegExp 寫法

字串方法 String Method

.search(RegExp)-

找到匹配的字串回傳第一個字元的位置 index,沒找到則回傳 -1。 如果參數不是正規表達式會丟進去建構式產生一個,另位 .search() 會忽視 g 旗標,永遠只能搜尋第一個。

"abc".search(/c/); // 2
"abc".search(/d/); // -1 

.replace(RegExp)-

.replace() 有三種用法:
1. 一般用法可以把匹配的字串換成另一個字串
2. 用 $n 可以去到前面正規表達式第 n 個括號的參考
3. 傳入函式來動態決定取代成什麼值

"aaa".replace(/a/, '1');  // "1aa"
"ababab".replace(/([ab])/g, '$1$1');  // "aabbaabbaabb"
function a() { return '1'; }
"aaa".replace(/a/, a);  // "1aa"

.match(RegExp)-

最常用的方法,把匹配的字串變成陣列,如果正規表達式沒有加上旗標 g,會在找到第一個匹配字串就結束,但回傳的是只有一個元素的陣列。

" aba abc abb ".match(/ab\w/);   // ["aba"]
" aba abc abb ".match(/ab\w/g);  // ["aba","abc","abb"]

.split(RegExp)-

用正規表達式匹配的字元來分隔。

"a, b,   c,d".split(/\s*,\s*/); 
// 可以匹配左右不定數目的空白,回傳["a","b","c","d"] 

正規表達式方法 RegExp Method

.exec(String)-

正規表達式主要的方法,跟字串的 .match() 有點類似,不過就算有 g  旗標一樣會回傳單一結果陣列。
不過在有 旗標的狀況下,會把匹配字串的下一個字元設成 lastIndex,第二次 .exec() 就會從後面開始找。


var regexp = /\w/g;
regexp.exec('abcabab');  // ["a"]
regexp.exec('abcabab');  // ["b"]
regexp.exec('abcabab');  // ["c"]
regexp.exec('abcabab');  // ["a"]

.test(String)-

有檢驗沒有符合的項目有 – 回傳 true 或是沒有 – 回傳 false,這個用法跟 .exec() 一樣在有 旗標的狀況下,會把匹配字串的下一個字元設成 lastIndex。

/c/.test('abc'); // true
/d/.test('abc'); // false 

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s