我試着檢查一個字符串是否包含任何字符,但'\'和'^'是不允許的。如何使用IsMatch正則表達式不匹配字符?
Regex nameValidator = new Regex("^[\\^]+$");
這不起作用:
!nameValidator.IsMatch(myString)
爲什麼?
我試着檢查一個字符串是否包含任何字符,但'\'和'^'是不允許的。如何使用IsMatch正則表達式不匹配字符?
Regex nameValidator = new Regex("^[\\^]+$");
這不起作用:
!nameValidator.IsMatch(myString)
爲什麼?
因爲^字符類內部的含義與外部不同。它意味着否定階級角色。所以,我的正則表達式將使一切除了\
和^
Regex nameValidator = new Regex(@"^[^^\\]+$");
試試這個方法:
Regex nameValidator = new Regex(@"^[^\^\\]+$");
string sample_text = "hello world";
bool isMatch = nameValidator.IsMatch(sample_text); // true
sample_text = @"Hello^\world ";
isMatch = nameValidator.IsMatch(sample_text); // false
的\轉義的字符串在C#中文字反斜線。您的正則表達式(因爲正則表達式engione看到它)因此是
^[\^]+$
哪個是有效的,但不是你想要的。 (推薦)
new Regex("[\\\\\\^]+");
或字符串文字之前使用@
new Regex(@"[\\\^]+");
你必須逃離這兩個反斜線和插入符號,所以:(的關心得到由反斜線) 更改爲三重反斜槓。要在沒有@的字符串文字中使用它們,你必須再次將每個反斜槓轉義,所以你有六個。
這些不起作用。我希望我的字符串包含0-9,a-z和任何其他字符,但不是\或^ – Ale 2013-03-08 10:25:24
正確。就像你原來的正則表達式一樣,它只有^和$來匹配整個字符串。糾正。請注意,它匹配任何帶有^或\的字符串。我發現在正則表達式中使用否定更優雅,而不是使用!isMatch() – 2013-03-08 10:35:34
new Regex(@「^ [^^ \\] + $」);會有兩個否定。插入符號必須用反斜線,而不是其他插入符號。 – 2013-03-08 10:11:28
@DasKrümelmonster你嘗試過嗎? – VladL 2013-03-08 10:14:26
我剛剛做了,學到了一些東西。抱歉過早的批評。有一個upvote :-) – 2013-03-08 10:18:27