2012-07-22 86 views
0

我是新手正則表達式並試圖學習。我的要求是隻考慮一個字符串,如果它只有小字母,絕對沒有別的。 ex:abc,khj,sdfs是有效的單詞,但是Abc,KHJ,123,$ bd無效。C#正則表達式跳過一些特殊字符

我寫一個正則表達式如下:

private bool IsValid(string str) 
{ 
    Regex r = new Regex(@"[a-z][^<>%'=\$]"); 
    Console.WriteLine(str + " : " + r.IsMatch(str).ToString()); 
    return r.IsMatch(str); 
} 

但是,當我通過以下輸入到該方法:

"a<>'b=b" 
"abc" 
"a$b" 
"123" 
"IHH" 

它被識別abc爲有效的,但它也識別a$ba<>'b=b作爲有效的單詞! (對於那些返回true) 我想了解如何跳過a$ba<>'b=b ??該方法應爲它們返回false

請幫我理解。

感謝

回答

1

使用這種方法用適當的模式:

private bool IsValid(string str) 
{ 
    Regex r = new Regex(@"^[a-z]+$"); 
    Console.WriteLine(str + " : " + r.IsMatch(str).ToString()); 
    return r.IsMatch(str); 
} 
+0

我正在嘗試這一個,它現在給我的每個輸入「false」。即使對於abc,def等 – Micks 2012-07-22 17:43:05

+0

更正,它的工作原理。我錯誤地傳遞了一個額外的空間作爲該方法的輸入。我修剪它,它的工作。非常感謝。 – Micks 2012-07-22 17:56:43

0

你的正則表達式看起來像

var pat = /^[a-z]+$/; 
+0

對不起,不起作用。它爲每個輸入(甚至abc,def等)提供假(false) – Micks 2012-07-22 17:44:43

0

很好的參考:RegEx Cheat Sheet

試試這個:^[a-z]+$

+0

我正在嘗試這一個,它現在給我輸入「false」。即使對於abc,def等 – Micks 2012-07-22 17:42:27

+0

更正,它的工作。我錯誤地傳遞了一個額外的空間作爲該方法的輸入。我修剪它,它的工作。非常感謝。 – Micks 2012-07-22 17:57:24