1

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

我正在使用 asp.net C#,但我似乎发现我正在编写的代码不正确

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

提前致谢

4

5 回答 5

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));
}

使用正则表达式

public static bool stringOnlyAndLimit(String strToCheck)
{
    Regex stringonly = new Regex("^[a-zA-Z ]{1,30}$");
    return stringonly.IsMatch(strToCheck);
}
于 2013-09-10T17:27:22.853 回答
1

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

^[a-zA-Z ]{1,30}$
于 2013-09-10T17:27:11.070 回答
1

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

如果你想用一个包含空格字符的正则表达式检查名字和姓氏,并且少于 30 个字符,它应该是这样的:

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

于 2013-09-10T17:29:07.050 回答
0

试试这个正则表达式

^[A-Za-z]{0,30}$
于 2013-09-10T17:29:34.080 回答
0

不是特别适用于 C#,^ 是括号内的NOT符号。所以 [^abc] 将匹配a、b 或 c 之外的任何字符。

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

于 2013-09-10T17:28:49.197 回答