正则表达式字符串仅限制

时间:2013-09-10 17:23:49

标签: c# regex

我正在学习在字符串上创建限制为30个字符的正则表达式查询(主要用于名字和姓氏)

我使用的是asp.net C# 但我似乎没有用我编写的代码

来发现它是正确的
[WebMethod]   
public bool stringOnlyAndLimit(String strToCheck) 
{
    Regex stringonly = new Regex("[^a-zA-Z]{1,30}"); 
    return !stringonly.IsMatch(strToCheck);
}

提前致谢

5 个答案:

答案 0 :(得分:2)

如果您想学习RegEx,请忽略此答案,否则

非RegEx选项。 你不需要像这样的东西,你可以这样做:

public bool stringOnlyAndLimit(String strToCheck)
{
 return strToCheck.Length < 31 && strToCheck.All(r => char.IsLetter(r));        
 //return strToCheck.Length < 31 && !strToCheck.Any(r => char.IsDigit(r));
}

使用RegEX

public static bool stringOnlyAndLimit(String strToCheck)
{
    Regex stringonly = new Regex("^[a-zA-Z ]{1,30}$");
    return stringonly.IsMatch(strToCheck);
}

答案 1 :(得分:1)

您可以尝试这样的事情: -

^[a-zA-Z ]{1,30}$

答案 2 :(得分:1)

你的正则表达式[^a-zA-Z]{1,30}目前说给我任何不是字母a-z&amp; A-Z因为括号内的胡萝卜^。删除它,它将适用于没有空格的单个字符串。

如果您想使用一个包含空格字符的RegEx检查名字和姓氏,并且不超过30个字符,则应该是这样的:

^[a-zA-Z\s]{1,30}$

答案 3 :(得分:0)

不是特别针对C#,^是括号内的 NOT 符号。因此[^ abc]将匹配 a,b或c。

之外的任何字符

所以你的正则表达式应该是[a-zA-Z] {1,30}

答案 4 :(得分:0)

试试这个正则表达式

^[A-Za-z]{0,30}$