我想验证字符串以满足以下条件:
我有以下正则表达式,除了全零部分之外,它将获取所有内容。有没有办法不允许全部为零?
^[A-Z0-9][0-9]{5}$
这是唯一的方法来检查正则表达式(并允许“000000”),但然后具体检查它不是“000000”?
感谢。
答案 0 :(得分:19)
只是有一个像这样的负面预测来禁止所有0:
/^(?!0{6})[A-Z0-9][0-9]{5}$/
答案 1 :(得分:1)
我会做两次通行证。一个是你的第一个正则表达式,一个是一个新的正则表达式寻找全零。
答案 2 :(得分:1)
如果您首先检查全零情况,然后在确定不是所有零都应用您的正则表达式后怎么办?
if ( NOT ALL ZEROS)
APPLY REGEX
答案 3 :(得分:1)
您可以使用public boolean matches(CharSequence rawPassword, String encodedPassword) {
if (encodedPassword == null || encodedPassword.length() == 0) {
logger.warn("Empty encoded password");
return false;
}
if (!BCRYPT_PATTERN.matcher(encodedPassword).matches()) {
logger.warn("Encoded password does not look like BCrypt");
return false;
}
return BCrypt.checkpw(rawPassword.toString(), encodedPassword);
}
否定前瞻来避免匹配仅包含1个或多个零的字符串:
(?!0+$)
请参阅regex demo。这种方法允许您在/^(?!0+$)[A-Z0-9][0-9]{5}$/
^^^^^^^
之后复制/粘贴前瞻,而不用担心消费部分匹配多少个字符。
<强>详情
^
- 字符串的开头^
- 如果有一个或多个(?!0+$)
字符到字符串末尾(0
)$
- 大写的ASCII字母或数字[A-Z0-9]
- 五位数[0-9]{5}
- 字符串结束。答案 4 :(得分:0)
我认为这样做会。它检查不是000000和你的原始正则表达式。
(?!0{6})^[A-Z0-9][0-9]{5}$
答案 5 :(得分:0)
(?!000000)[A-Z0-9][0-9]{5}
如果前瞻可以。
答案 6 :(得分:0)
这是此正则表达式的正确答案
[O] {1}((?! 0 + $)[0-9] {1,5})
如果您正在使用特定ID。所以你必须使用
例如1. O0-拒绝 2. O00-拒绝 3. O00000-拒绝 4. O1-成功 5. O01-成功