如何在javascript中排除正则表达式中的某些单词? [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我有这个正则表达式匹配我的系统中的用户名:/[a-zA-Z]+([_-]?[0-9a-zA-Z]+)*$/。它以字母开头,允许numbers, _ and -。但我不希望用户名包含一些像adminfacebookofficial等词。我怎样才能将这些词添加到正则表达式?我想使用一个正则表达式来管理所有约束。

javascript regex regex-negation
2个回答
1
投票
/^(?=((?!(admin|facebook|official)).)+$)[a-z]+[_-]?[0-9a-z]+$/i

Check it:

input { width: 100%; box-sizing: border-box; outline: none; }
:valid { border: 1px solid green; }
:invalid { border: 1px solid red; }
<input pattern="^(?=((?!(admin|facebook|official)).)+$)[a-zA-Z]+[_-]?[0-9a-zA-Z]+$" autofocus>

1
投票

这是一种可能性:

^((?!admin|facebook|official)[a-zA-Z])((?!admin|facebook|official|[-_]{2})[-_0-9a-zA-Z])*$

Demo

编辑:更新以提高效率。

© www.soinside.com 2019 - 2024. All rights reserved.