不接受0-0-0的正则表达式是什么

What will be the regex that not accept 0-0-0?

本文关键字:是什么 正则表达式 0-0-0 不接受      更新时间:2023-09-26

我想写一个正则表达式,它可以接受以下几点,

1-格式应为x-y-z

2-x、y和z应该是数字。

3-x可以是任何数字。

4-y不能超过20。

  1. z不能超过272

6-x,y,z不能同时为0。

我写了一个正则表达式,实现了前5点。正则表达式是

^([0-9]+)-([0-9]|1[0-9])-([0-9]|[0-9][0-9]|1[0-9][0-9]|2[0-6][0-9]|27[0-2])$ 

但它也接受0-0-0,这是不应该接受的。有没有办法避免0-0-0?

您可以在^之后的开始处添加一个(?!0+-0+-0+$)负前瞻来锚定它:

^(?!0+-0+-0+$)([0-9]+)-([0-9]|1[0-9])-([0-9]|[0-9][0-9]|1[0-9][0-9]|2[0-6][0-9]‌​|27[0-2])$

查看regex演示

如果整个字符串仅包含0 s和- s,则(?!0+-0+-0+$)将无法匹配。

var re = /^(?!0+-0+-0+$)([0-9]+)-([0-9]|1[0-9])-([0-9]|[0-9][0-9]|1[0-9][0-9]|2[0-6][0-9]‌​|27[0-2])$/; 
var strs = ['1-19-44', '0-0-0', '0-0-6'];
for (var s of strs) {
  document.body.innerHTML += s + ": <b>" + re.test(s) + "</b><br/>";
}