正则表达式字符串仅具有限制
本文关键字:有限制 字符串 正则表达式 | 更新日期: 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}$