我正在尝试创建一个表达式来检查响应是否至少包含三个字母。数字,空格和所有其他字符均有效。我下面的内容只有在特殊字符没有出现时才有效。
(?=(.*[a-zA-Z]){3,})^[a-zA-Z0-9].+$
答案 0 :(得分:6)
您可以使用更简单的正则表达式:([a-zA-Z].*?){3}
这匹配一个字母,可选地后跟其他字符,重复三次。
答案 1 :(得分:1)
(?:[a-zA-Z][^a-zA-Z]*){3}
匹配(一封信,然后是任何非字母)3次。 (?:)
使得它更有效率,因为正则表达式引擎不必捕获。
当然,没有正则表达式,阅读和理解可能更容易。这是C#/ linq的例子。
if (s.Count(char.IsLetter) >= 3)
{
// is valid.
}