javascript regex 至少需要一个字母,一个数字并防止添加某些单词
Posted
技术标签:
【中文标题】javascript regex 至少需要一个字母,一个数字并防止添加某些单词【英文标题】:javascript regex requiring at least one letter, one number and prevents from adding certain words 【发布时间】:2017-12-15 17:21:39 【问题描述】:我正在尝试修改我的正则表达式,它要求用户输入至少一个字母和一个数字,如下所示:
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
出现在文本中的任何位置,因此您的正则表达式似乎可以解决问题。如果您将其写为答案,我会将其标记为已接受的答案。谢谢!
不客气!很高兴它有帮助。
【参考方案1】:
在您的示例中,负前瞻仅在字符串开头不允许example
。只需将.*?
添加为小丑即可在字符串中的任何位置禁止该单词,并在需要时使用word boundaries \b
。
/^(?!.*?example)(?=\D*\d)[^a-z]*[a-z].*$/i
(?!.*?example)
first lookahead 不允许 example
在行中的任何位置
(?=\D*\d)
第二个前瞻要求在任意数量的 \D
非数字之后有一个数字。
[^a-z]*[a-z]
匹配任意数量的non-字母字符,直到字母。
See demo at regex101
实际上,您只需要两个前瞻即可独立于条件。一个用于所需的数字,一个用于单词。字母的要求可以在图案里面完成。
Lookarounds 是在特定位置触发的零长度断言。
【讨论】:
以上是关于javascript regex 至少需要一个字母,一个数字并防止添加某些单词的主要内容,如果未能解决你的问题,请参考以下文章
R REGEX匹配-至少1个小写字母,1个数字,并且没有8个长度的特殊字符[重复]