2012-03-01 61 views
1
var rxDatePattern = new RegExp("^(?:\\d*\\.\\d{" + no + "})$"); 

這是使用decimal.The值被存儲在該變量沒有後3位接受數值的定期記錄模式IM .... 這是工作正常,但我那種不明白的模式,任何人可以幫助我的模式.. 感謝說明關於正則表達式模式

+0

:http://regexpal.com/ – 2012-03-01 11:41:00

回答

3

^$分別用於字符串的開始和結束錨。在這種情況下,它們使正則表達式匹配一個完整的字符串,而不僅僅是一個子字符串。

\d代表單個數字,而\d*是,由於*量詞,一系列的至少零個數字。然後遵循字面點,匹配,以及點(.)和可變數目的數字,例如, \d{3}

正則表達式包含\\d而不是\d的原因是\也是JavaScript中字符串的轉義字符。因此,要在包含在字符串中的正則表達式中包含文字反斜槓,您必須避開反斜槓一次,因此正則表達式引擎會看到實際的反斜槓。

最後,所有這些被封閉在一個非捕獲組(?:...),雖然我不太明白爲什麼。它在這種情況下不起作用,也可以省略。

所以對於no = 2,這將匹配像

1.23 
123.45 
.00 

但不是字符串像

.123 
1.123 
5.3 
2 
1. 
+0

嘿感謝喬伊!!!! – freebird 2012-03-01 11:53:02

0

第一\ d *字符串是說 「許多數字或0之前。」 「」 然後\ d {3}(3是var no的值)就是說「之後的3個數字」。「」)

開始的「^」和結尾的「$」是說「正好這種模式「如果你想擺弄它

+0

嘿謝謝你的回覆,,,我不明白爲什麼使用\\ d而不是\\ d,是不是正確的方式... – freebird 2012-03-01 11:43:09

+0

我也不知道,也許是因爲「不捕獲組「之前設置的模式(?:.....) – artragis 2012-03-01 11:49:04

+0

@freebird:要在一個字符串中得到一個'''',您必須將其轉義:'\\''。所以,''\\ d''會使字符串變成字符''\ d'',並傳遞給正則表達式的構造函數。 ''\ d''只會產生一個字符串,只有字符''d''。 – pimvdb 2012-03-01 11:53:08