在正则表达式javascript中只排除0

Exclude only 0 in regular expression javascript

本文关键字:排除 正则表达式 javascript      更新时间:2023-09-26

我想创建一个正则表达式,它将接受一到十个数字值,但它不应该接受如果只提供0

例如

1 is valid input
1111123455 is valid input
01 is valid input
010 is valid input
0000 is not valid input
0 is also not valid input
0000000000 is also not valid input 

i tried regex

^([0-9]{1,10}|)$

接受十个数字,但如何避免只有0

你可以使用否定的forward:

^(?!0+$)[0-9]{1,10}$

查看regex演示

细节

:

  • ^ -字符串
  • 起始
  • (?!0+$) -在字符串
  • 结尾之前不允许只有零
  • [0-9]{1,10} - 1 ~ 10位
  • $ -字符串结束

:也允许空值,使用0作为限定词的最小参数:

^(?!0+$)[0-9]{0,10}$
              ^

请参阅Negative Lookahead如何工作(更多信息在这里)以了解更多关于(?!0+)如何在此模式下工作的信息。简而言之:在字符串的开始,我们检查整个字符串是否为零。如果字符串的开始后有0或更多,则匹配失败。否则,匹配1(或0)到10位数字并返回结果。

您可以像这样使用Number函数检查。不需要正则表达式

var str = '10001';
console.log(Boolean(Number(str))); This returns true if string does not contain only zeros and false if string contains only zeros

您可以使用regex作为:^(?=.*[1-9])'d{1,10}$

解释:

^断言字符串的起始位置

(?=.*[1-9]) Positive Lookahead -断言下面的正则表达式可以是*匹配任何字符(换行符除外)在零次和无限次之间,尽可能多地给予[贪]

[1-9]匹配1- 9a下面列表中的单个字符1到9之间的单个字符

'd{1,10}匹配数字[0-9]量词:{1,10}在1到10之间在需要的时候,尽可能多地给予回报[贪]

$断言字符串末尾的位置

console.log("1".match(/^(?=.*[1-9])'d{1,10}$/));
console.log("1111123455".match(/^(?=.*[1-9])'d{1,10}$/));
console.log("0000".match(/^(?=.*[1-9])'d{1,10}$/));
console.log("0".match(/^(?=.*[1-9])'d{1,10}$/));
console.log("0000000000".match(/^(?=.*[1-9])'d{1,10}$/));