2008-11-03 32 views
2

這是JavaScript的,但幾乎相同的正則表達式在PHP中失敗過,所以我不認爲這是特定正則表達式 - 我做錯了什麼嗎?

var r = new RegExp(
    "^(:19|20)?[0-9][0-9]"   // optional 19/20 start followed by 2 numbers 
    + "-"        // a hyphen 
    + "(:0?[1-9]|1[0-2])"    // optional 0 followed by 1-9, or 10, 11, 12 
    + "-"        // a hyphen 
    + "(:3[01]|[12][0-9]|0?[1-9])$" // you get the idea. 
); 
r.test("2008-07-01");    // == false 

我失去了什麼地球上的語言?

回答

11

我認爲你的非捕獲塊應該是(?:19|20)而不是(:19|20)

+0

這就是它,歡呼聲。 – nickf 2008-11-03 07:36:07

2

正確;您的正則表達式實際上可以與「?」配合使用:

「?」當使用前綴時,表示你將要做一些關於捕獲的事情。要麼不捕獲塊(「:」),在前面捕獲(「=」),在後面(「< =」)等。

相關問題