我需要一个符合以下条件的正则表达式:
- 最少 5 个字符,没有最大字符数(仅限字母和数字)
- 必须至少包含 4 个字母
- 必须至少包含 1 个数字
例如正确结果: 根1 1根 root 根目录 等等……
目前我有模式 ^(?=.*\d{1,})(?=.*[a-zA-Z]{4,}).{5,}$
但这似乎也接受特殊字符......?
非常感谢!
最佳答案
.{5,}
这就是它允许特殊字符的原因(点 = 所有内容(除了换行符等))。将其更改为 [a-z0-9]{5,}
或您想要的任何内容。
注意:(?=.*\d{1,})(?=.*[a-zA-Z]{4,})
只检查第二和第三个要求,但是不要说任何关于 Angular 色想要的性质。
编辑:
其他问题:您的规范说“至少 4 个字母”,但您的正则表达式说“4 个连续的字母”。另外,使用 lazy量词。
/^(?=.*?\d)(?=(?:.*?[a-z]){4})[a-z0-9]{5,}$/i
(?=.*?\d)
=> 你不需要检查超过 1 个数字,一旦找到就停止。
(?=(?:.*?[a-z]){4})
=> 更改为查找 4 个字母,但不是连续的。此外,在末尾添加了一个不区分大小写的修饰符 i
(在 JS 中,在 Java 中你不是以相同的方式声明它)。
关于java - 我需要 Java 和 Javascript 的特定正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16169737/