我想编写一个正则表达式,它可以查找长度为10-15的子字符串,其中所有字符都是
[A-Z0-9]
,并且它必须包含至少1个字母和1个数字(空格可以,但不要出现其他特殊字符)。一些例子:
ABABABABAB12345
应该匹配ABAB1234ABA32
应该匹配ABA BA BABAB12345
应该匹配1234567890987
不应该匹配ABCDEFGHIJK
不应该匹配ABABAB%ABAB12?345
不应该匹配
到目前为止,我想到的最好的两个候选项是:
(?![A-Z]{10,15}|[0-9]{10,15})[0-9A-Z]{10,15}
- 如果字符串有10个连续的数字/字母,则此方法会失败,即使15个字符的字符串具有混合性(例如ABABABABAB12345
)。(?=.*[0-9])(?=.*[A-Z])([A-Z0-9]+){10,15 }
- 如果后面还有数字,则此方法将匹配15个连续字母,反之亦然(例如123456789098765 abcde
将匹配123456789098765
)。
(我需要在 Python 和 JS 中实现此功能)
ABCDEFGHIJK
matches the requirements, why do you say it should not match? Same with1234567890987
- smac89^[A-Z0-9 ]{15,20}$
,但我猜测您可能有其他未明确说明的要求。请在上面的评论中回答问题(通过编辑)。不要使用“...其中所有字符都是[A-Z0-9](空格可以,但不包括其他特殊字符)。”而是说“其中所有字符都是[A-Z0-9 ]
”(或“其中所有允许的字符都在字符类[A-Z0-9 ]
中”)。 - Cary Swoveland