正規表示式,Regular Expression、regex、regexp 或 RE 都行,是一個學起來就很好用的東西
例如我想要取出數字:
var re = new RegExp('/\b([0-9]|10)\b /'
更多教學可以參考這裡:https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Regular_Expressions
而在 E2E 中,也是常有需要使用 Regex 的時候
假設我從某個欄位中取出資料,由於取出來的資訊可能很長或包含一些不固定的字元,使用 .equal()
或 .containsText()
就不那麼適合
在 Nightwatch 中也是有這麼好用的東西,用法如下:
.getText('span[class*=danger]', result => {
result = result.value.match('(?<=\\?).*(?=\\=)')[0];
this.assert.match(result, /ssn/);
})
使用 .match()
的方式,就可以快速切割出我們想要的值,也可以從驗證的地方使用 regex
不過要注意的部分是,這邊吃的 regex 不是根據 local 的 node,而是根據 browser 本身
舉例來說,lookbehind 這種拿來切割的 regex syntax 在 Safari 就是不被 support 的
因此會直接有 regex 的 error 噴出~
關於什麼瀏覽器支援什麼 regex syntax 也可以從這裡看:https://caniuse.com/js-regexp-lookbehind