1

我需要一个接受任何包含至少 3 个英文字母的字符串的正则表达式。字母可以在字符串中的任何位置。

测试用例:

应该返回true

美国广播公司
这是一个测试
这个数字 123 只是 $@!!。
123ABC289389798

应该返回false

抗体
ab213823897

编辑:对不起,我应该澄清它需要 3 个英文字母。字母可以在字符串中的任何位置。

4

5 回答 5

7

这样的事情怎么样?

[A-Za-z].*[A-Za-z].*[A-Za-z]

[A-Za-z] 匹配来自 AZ 或来自 az 的任何字符。这个正则表达式保证你有 3 个这样的字符。.* 匹配任意数量的任意字符,因此您的三个字母字符可以是连续的,也可以在之前/之后/中间有任何内容。

在像http://gskinner.com/RegExr/这样的正则表达式工具上进行测试

您也可以像这样合并它:

([A-Za-z].*){3}

编辑:用 [A-Za-z] 替换 \w 并添加解释。

EDIT2:感谢@nhahtdh,从开头和结尾删除 .* 因为我们只需要匹配,而不是覆盖整个字符串。

于 2013-05-14T13:38:17.627 回答
3

如果您希望所有字母都返回 true 背靠背,只需使用:

[a-zA-Z]{3,}

这不包括空格。

如果您不需要将这些背靠背放置,请尝试以下操作:

[a-zA-Z].*?[a-zA-Z].*?[a-zA-Z]
于 2013-05-14T13:40:40.347 回答
1

也许 :

/([a-z]|[A-Z]){3,}/

http://jsbin.com/oleseb/1/edit

于 2013-05-14T13:39:26.037 回答
1

这将起作用:

[a-zA-Z]{3,}

它将匹配 3 个或更多a-z&A-Z字符

于 2013-05-14T13:40:55.187 回答
0

这是一个解决方案:

string.replace(/[\W^\d]/g, '').length >= 3;
于 2013-05-14T13:41:35.113 回答