雖然研究在JavaScript中使用正則表達式,一個可能遇到的例子有兩種類型:是否需要使用var foo = new RegExp?
答:
var regex = /^[a-zA-Z0-9]+$/;
B:
var regex = new RegExp ("^[a-zA-Z0-9]*$");
是否有必要使用var foo = new RegExp
?或者,什麼時候應該選擇每種方法?
雖然研究在JavaScript中使用正則表達式,一個可能遇到的例子有兩種類型:是否需要使用var foo = new RegExp?
答:
var regex = /^[a-zA-Z0-9]+$/;
B:
var regex = new RegExp ("^[a-zA-Z0-9]*$");
是否有必要使用var foo = new RegExp
?或者,什麼時候應該選擇每種方法?
當您必須在運行時動態組裝正則表達式時,RegExp()
構造函數非常有用。如果表達式是完全靜態的,則使用本地正則表達式語法(您的「A」)更容易。本地語法的易用性源於這樣一個事實,即您不必擔心引用反斜槓,就像您在正則表達式開始生成字符串常量時一樣。
是否需要使用
var foo = new RegExp
?
不,顯然不是。另一個也適用。
或者,何時應該選擇每種方法?
Regex literals更容易讀寫,你不需要字符串轉義正則表達式的轉義字符 - 你可以用它們(反斜槓,行情)。而且,它們在腳本「編譯」期間僅被解析一次 - 每次評估該行時都不需要執行任何操作。如果您想動態構建正則表達式,只需要使用RegExp
constructor。
下面是一個'動態'正則表達式的例子,您可能需要new RegExp
。
var search = 'dog',
re = new RegExp('.*' + search + '.*');
如果它是一個靜態的正則表達式,則文本語法(您的A選項)是更好,因爲它更容易編寫和閱讀。
@JamesMontagne我猜我的問題更基本.. – Roy 2013-02-21 19:44:22