我需要构建一个具有以下约束的 JavaScript 正则表达式:
- 输入字符串至少需要 6 个字符长
- 输入字符串需要至少包含 1 个字母字符
- 输入字符串需要至少包含 1 个非字母字符
我严重缺乏 JavaScript 中的回溯功能。我想出的东西:
((([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z]))....)|
(.(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z]))...)|
(..(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z]))..)|
(...(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])).)|
(....(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])))
这看起来很长。有没有更好的办法?
我是怎么得出这个结论的:
- 字母字符的正则表达式是
[a-zA-Z]
- 非字母字符的正则表达式是
[^a-zA-Z]
- 所以我需要找一个
[a-zA-Z][^a-zA-Z]
左右。[^a-zA-Z][a-zA-Z]
(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z]))
- 我需要检查n 个前面的字符和 6- n 个后面的字符。