正则表达式字符串仅具有限制

本文关键字:有限制 字符串 正则表达式 | 更新日期: 2023-09-27 18:30:46

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

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

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

提前致谢

正则表达式字符串仅具有限制

如果你想

学习正则表达式,那就忽略这个答案,否则

非正则表达式选项。你不需要正则表达式来做这样的事情,你可以做:

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

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

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

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

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

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

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

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

试试这个正则表达式

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