使用C#/正則表達式,如何查找只包含逗號和字母數字(或其他非逗號)符號的字符串?C#正則表達式 - 如果字符串只包含一個字符
a: ',,,,,,,' match
b: ',,,,,,#A' no match
使用C#/正則表達式,如何查找只包含逗號和字母數字(或其他非逗號)符號的字符串?C#正則表達式 - 如果字符串只包含一個字符
a: ',,,,,,,' match
b: ',,,,,,#A' no match
如果我正確地讀你的問題,你想知道一個字符串是否只包含逗號。
如果是這樣,請使用此正則表達式:^[,]+$
。
這隻會匹配包含一個或多個逗號而沒有別的字符串。
一串逗號?
Regex.IsMatch(str, @"^,*$");
這會告訴你str
是否完全由commans組成。
[^,]
如果匹配,則表示一個字符串包含非逗號字符。
一個更完整的例子:
if (!Regex.IsMatch(yourTestString, "[^,]"))
{
// This string does NOT contain commas
}
+1以外的箱子;-) – Cameron
不錯的答案:) +1。 – Sagotharan
這應做到:
var text = ",,,";
Regex.IsMatch(text, @"^,+$"); // true
我建議,作爲一個字符的正則表達式將總是要檢查輸入的每個字符字符串在最壞的情況下,一個簡單的for循環肯定會更有效率。像這樣的東西會給在更短的時間和空間完全相同的效果比任何等價Regex
:
private void IsOnlyOneChar(string input, char c)
{
for (var i = 0; i < input.Length; ++i)
if (input[i] != c)
return false;
return true;
}
不是真的你要找的,但在我看來,這是你的最優解的答案。
+1我最喜歡這個答案。 – Paulpro
'Regex.Match()'返回一個Match對象,所以你必須檢查該對象的'Success'屬性以確定它是否工作。如果你想要的只是一個yes-no-answer的答案,那麼'IsMatch()'更合適。 –
@Alan謝謝:)我更新了我的答案。 (我不知道C#,只是正則表達式,但我認爲我可以查找C#語法並且無論如何回答。我很接近,對吧?哈哈) – Paulpro
我認爲設計正則表達式對象的人在吸毒。 –