2012-07-22 87 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