2011-05-12 70 views
0

我有一個棘手的時間讓這個正則表達式工作。我至今的模式是:JavaScript正則表達式的問題

var dollarPattern = /^\d{1,}|\s\d/gi; 

var matchedResults = new Array(); 
matchedResults = textValue.match(dollarPattern); 

我所希望使用的例子字符串「2〜2.99(63項)」來實現的,我要檢查它是否或者以數字開頭,或者如果它包含一個空格後跟一個數字(在這種情況下,兩個條件都爲真)。但是,我一直在Firefox中獲得「matchedResults is null」的錯誤(儘管它應該有2的長度)。

任何想法我做錯了什麼?謝謝...

+3

該代碼還在發生什麼? – 2011-05-12 07:04:32

+0

'{1,}'相當於'+'。這使得它更短,更具可讀性。 – stema 2011-05-12 07:08:18

回答

2

所有你需要的是逃避。

// Please note that this works, but @Lekensteyn pointed out that this uses string literals 
// Also, this will give you the first match(if exists) only. 
alert("2 to 3.99 (63 items)".match("^\\d\|\\s\\d")); 

OR

// This one will give you all possible matches 
alert("2 to 3.99 (63 items)".match(/^\d|\s\d/g)); 
+0

你瞭解RE嗎?沒有必要使用字符串文字而不是正則表達式文字。 – Lekensteyn 2011-05-12 07:08:51

+0

@Lekensteyn Nope,不是100%。我發佈了答案,因爲它工作。沒有「需要」,但這並不意味着它不能使用,如果使用它不會工作,對嗎?在您發表評論後,我確實搜索了Javascript RE基礎知識,並修改了答案。無論如何,感謝我的第一次downvote。 :-) – Lobo 2011-05-12 07:35:38

0

工作正常鉻,FF4,和IE8。

當我在正則表達式附近引用時,我得到null。

但是,輸出我得到它「2,2」。