2012-03-30 84 views
0

我嘗試用源驗證輸入'3a'爲正則表達式'[_a-zA-Z][_a-zA-Z0-9]*'德爾福TRegEx錯誤?

len := TRegEx.Create([_a-zA-Z][_a-zA-Z0-9]*).Match('3a').Length; 

我預計0len變量,但它是2。那是對的嗎?

回答

1

這不是你真正的代碼。一開始它不會編譯。你省略了引號。如果我們解決這個問題,那麼我們有:

len := TRegEx.Create('[_a-zA-Z][_a-zA-Z0-9]*').Match('3a').Length; 

但是,如您所述,返回值1而不是2。此返回值是正確的,因爲a匹配[_a-zA-Z],然後輸入字符串結束。

我希望你有錯誤的正則表達式。也許你應該使用

^[_a-zA-Z][_a-zA-Z0-9]*$ 

^輸入字符串的開頭匹配,$ MATHES結束。推測該輸入來自源代碼標記器。

所以結論是,在這個模式和輸入的Delphi正則表達式代碼中沒有明顯的錯誤。

+10

一旦我遇到了問題,並想「嘿,我可以使用正則表達式來解決這個問題」。然後,我有兩個問題。 – 2012-03-30 17:25:29