java - 我需要 Java 和 Javascript 的特定正则表达式模式

标签 java javascript regex

我需要一个符合以下条件的正则表达式:

  • 最少 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/

相关文章:

python - os.walk 正则表达式

javascript - 带有 'and' 运算符的 Perl/Javascript 正则表达式

regex - 使用 Perl Regex Multiline 重新格式化文件

java - 如何在 Jetty 中设置多个处理程序并且在启动过程中不出现错误

java - 找不到类型 [简单类型,类 java.lang.Class<java.lang.Object>] 的 (Map) 键反序列化器

javascript - 如何从 Enzyme 获取 React children

javascript - Google Apps 脚本中 UrlFetchApp.fetch 出现意外错误

java - 如何在 Ant 中将 java 项目转换为插件项目?

java - Android上的Whatsapp数据库解密

Javascript。从特定位置获取节点