我需要一个接受任何包含至少 3 个英文字母的字符串的正则表达式。字母可以在字符串中的任何位置。
测试用例:
应该返回true
:
美国广播公司 这是一个测试 这个数字 123 只是 $@!!。 123ABC289389798
应该返回false
:
抗体 ab213823897
编辑:对不起,我应该澄清它需要 3 个英文字母。字母可以在字符串中的任何位置。
我需要一个接受任何包含至少 3 个英文字母的字符串的正则表达式。字母可以在字符串中的任何位置。
测试用例:
应该返回true
:
美国广播公司 这是一个测试 这个数字 123 只是 $@!!。 123ABC289389798
应该返回false
:
抗体 ab213823897
编辑:对不起,我应该澄清它需要 3 个英文字母。字母可以在字符串中的任何位置。
这样的事情怎么样?
[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,从开头和结尾删除 .* 因为我们只需要匹配,而不是覆盖整个字符串。
如果您希望所有字母都返回 true 背靠背,只需使用:
[a-zA-Z]{3,}
这不包括空格。
如果您不需要将这些背靠背放置,请尝试以下操作:
[a-zA-Z].*?[a-zA-Z].*?[a-zA-Z]
这将起作用:
[a-zA-Z]{3,}
它将匹配 3 个或更多a-z
&A-Z
字符
这是一个解决方案:
string.replace(/[\W^\d]/g, '').length >= 3;