學JS的心路歷程Day12 | 正規表達式test
今天我們來看正規表達式,在談到為什麼需要多學這個之前,先來看個範例。假設需要判斷輸入字串是否含有"apple":vartext="Aappleadaykeepsthedoctoraway";functionhasApple(val){hasStr=val.indexOf("apple");if(hasStr===-1)returnfalse;returntrue;}hasApple(text);//true看起來很簡單,對吧!但如果今天要判斷的不只一個的話呢?只能不段增加變數和判斷式長度嗎?這聽起來就是個寫"糙code"的開始。(想知道什麼是"糙code"可以參考這個系列喔可不可以不要寫糙code[1])那麼該怎麼作呢?很簡單,JS有提供給我們正規表達式,可以這樣...
今天我們來看正規表達式,在談到為什麼需要多學這個之前,先來看個範例。
假設需要判斷輸入字串是否含有"apple":
var text="A apple a day keeps the doctor away"; function hasApple(val){ hasStr = val.indexOf("apple"); if(hasStr === -1) return false; return true; } hasApple(text);//true看起來很簡單,對吧!但如果今天要判斷的不只一個的話呢?只能不段增加變數和判斷式長度嗎?這聽起來就是個寫"糙 code "的開始。(想知道什麼是 "糙 code " 可以參考這個系列喔 可不可以不要寫糙 code[1])
那麼該怎麼作呢?很簡單, JS 有提供給我們正規表達式,可以這樣寫:
var text="A apple a day keeps the doctor away"; function hasApple(val){ return /apple/.test(text) } hasApple(text);//true是不是比上面的例子乾淨許多了呢!
既然這樣,話不多說我們趕緊來看到底怎麼用吧。
在 JS 中我們有兩種方式可以建立正規表達式: 透過正規表達式實值 建立一個 RegExp 實例 const pattern = /apple/; const otherPattern = new RegExp("test");兩種方式都能建立出相同的正規表達式,但如果在一開始就知道了正規表達式的內容,會一般會比較推薦用實值的方式建立,建構式方式比較用於程式執行階段時,動態透過字串建立。--《忍者 JavaScript 開發技巧探祕》,第十章
接下來會列出常見的語法以及與之相關的方法,可能會讓你認為難以理解,但我會盡我所能的用範例講解。
首先我們要知道正規表達式都會包含兩個 / ,千萬不要跟 搞混,他是有特殊用法的!