2011-06-20 93 views
-1

我剛剛進入的JavaScript正則表達式......我似乎已經在和困惑自己...'RegExp'和正則表達式的區別?

一些谷歌搜索在這裏和那裏沒有做我任何要麼好...

我知道的JavaScript語法:

var str = "Hello!"; 
var x = new RegExp(...); 
document.write = x.eval(str); 

我在這裏失去了一些東西?

編輯:顯然我並不清楚...我是JavaScript正則表達式的新手。從我的理解,正則表達式和正則表達式是不同的。如果是這樣,有什麼區別?

+2

你是什麼確切的問題? – Joey

+1

標題與你的問題主體有什麼關係? –

+2

「正則表達式」和「正則表達式」是「正則表達式」的兩個常用縮寫。這是混亂的根源嗎? –

回答

3

還有 「RegExp類」 語法:

var pattern = new RegExp("/[a-z]+/","i"); 

和 「正則表達式字面」 語法:

var pattern = /[a-z]+/i; 

每個採取這些的e有他們自己的忠告。類語法可以處理變量,這樣您可以創建動態正則表達式,另一方面,文字systax更短,而且您不必轉義那麼多。

後,你有你的格局,你可以使用一些正則表達式的方法,例如:

text.match(pattern); 
text.replace(pattern,replacement); 

pattern.exec(text); 
pattern.test(text); 
4

JavaScript的RegExp實例沒有eval函數,您可能會想到exectest

實施例:

var rex = /^\d+$/; 
//Or var rex = new RegExp("^\\d+$"); 
//Note how within quotes you have to escape backslashes 

if (rex.test(someValue)) { 
    display("Yup, it's all digits"); 
} 
else { 
    display("Nope, there are non-digits there or it's blank."); 
} 

Live copy

+0

取決於,他們似乎有Firefox;)https:// developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/Eval(但它當然不符合人們的期望)。 –

+0

@Felix:這不符合標準。所以也許我應該說* ECMAScript *的'RegExp'沒有它(「JavaScript」仍然是Oracle授權給Mozilla的商標)。 –

+0

其實我只是在開玩笑...... :) –

相關問題