javascript 正则表达式要求至少一个字母、一个数字并防止添加某些单词

javascript regex requiring at least one letter, one number and prevents from adding certain words

我正在尝试修改我的正则表达式,它要求用户至少键入一个字母和一个数字,如下所示:

new RegExp('^(?=.*[a-z])(?=.*[0-9]).+$')

而且我想阻止用户在 @ 之前使用某些词,例如电子邮件地址部分。

所以我们假设电子邮件地址是 example@example.com

我想强制用户使用不包含 example 的字符串(字符串的任何部分)

这是我目前所拥有的:

\b(?:(?!example)\w)+\b

但它并没有真正强制用户至少使用一个字符和一位数字。

当我试图限制它时,我以这样的方式结束:

\b(?:(?!example).*[a-z].*[0-9])+\b

但现在字符串必须遵循 example 然后 [a-z] 然后 [0-9]

的顺序

非常感谢任何帮助

谢谢!

在您的示例中,否定前瞻仅在字符串的开头不允许 example。如果需要,只需添加 .*? as joker to disallow the word anywhere in the string and use word boundaries \b

/^(?!.*?example)(?=\D*\d)[^a-z]*[a-z].*$/i
  • (?!.*?example) 先行禁止 example 行中的任何地方
  • (?=\D*\d) 第二次前瞻需要在任意数量的 \D 非数字之后有一个数字。
  • [^a-z]*[a-z] 匹配任意数量的 non 字母字符,直到字母。

See demo at regex101

实际上,您只需要两个独立于条件的前瞻。一个用于所需的数字,一个用于单词。字母要求可以在pattern里面完成

环视是在特定位置触发的零长度断言。