需要一个接受任何包含至少3个字母的文本的正则表达式

时间:2013-05-14 13:35:58

标签: javascript regex

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

测试用例:

应该返回true

abc
This is a test
This number 123 just $@!!.
123ABC289389798

应该返回false

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

5 个答案:

答案 0 :(得分:7)

这样的事情怎么样?

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

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

使用http://gskinner.com/RegExr/

等正则表达式工具进行测试

你也可以像这样整合它:

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

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

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

答案 1 :(得分:3)

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

[a-zA-Z]{3,}

这不包括空格。

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

[a-zA-Z].*?[a-zA-Z].*?[a-zA-Z]

答案 2 :(得分:1)

或者也许:

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

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

答案 3 :(得分:1)

这将有效:

[a-zA-Z]{3,}

匹配,a-z& A-Z字符

答案 4 :(得分:0)

这是一个解决方案:

string.replace(/[\W^\d]/g, '').length >= 3;