2010-04-26 61 views
3

我想要一個正則表達式來驗證一個字符串以字母開頭,後面跟着一些字母,數字或下劃線。根據我的EditPadPro正則表達式解析器,下面的測試應該通過。但事實並非如此。爲什麼這個正則表達式不能在.NET中工作?

Regex.IsMatch("Class1_1", @"^\w[\w|\d|_]*$").ShouldBeTrue(); 

我錯過了什麼?

+0

這匹配'a | b' – SLaks 2010-04-26 15:38:39

+0

沒關係所有人。我有一個輸入錯誤,但我不知道\ w包含數字和下劃線 – 2010-04-26 16:20:40

回答

5

你的正則表達式工作,但並沒有做你認爲它的作用。

您應該使用

Regex.IsMatch("Class1_1", @"^[A-Za-z]\w*$") 

(測試)

+0

或者,「^ \ w [\ w \ d _] * $」,但正如David M所指出的那樣\ w包含\ d和_無論如何,所以實際上「^ [a-zA-Z] \ w + $」 – Zarigani 2010-04-26 15:43:10

3

\ W包括\ d和下劃線 - 即使你的測試通過,正則表達式將不會被測試,你希望它是什麼!

+0

Regex.IsMatch(「Class1_1」,@「^ \ w + $」)不起作用。對此有何評論? – 2010-04-26 16:14:57

+0

可能是您的全球化設置 - 表達式匹配我的機器。 – 2010-04-26 16:53:15