正则表达式匹配任何不以零结尾的数字

时间:2011-05-23 17:56:05

标签: javascript regex

我要求输入骰子游戏。 输入的数字是否可以被10整除是非常重要的。

对于以零结尾的数字,我有\ d + 0。

我需要一个不以零结尾的数字。

提前致谢。

8 个答案:

答案 0 :(得分:15)

也许这会成功

\d*[1-9]

答案 1 :(得分:12)

这不是正则表达式的好用。

我建议使用modulus或整数除法运算符。

if (number % 10) {
  // number doesn't end in zero
}

答案 2 :(得分:5)

\d+[1-9]

我认为应该有效。

这将匹配至少一个数字后跟一个非零数字。

但是,你很可能需要以某种方式嵌入它,或者通过锚定它:

^\d+[1-9]$

验证完整字符串是否只包含该数字(但是您也可以将所述字符串转换为数字并执行mod 10)。

你当前的方式(以及你问题中的表达式)它会匹配像1203这样的数字而没有两个表达式的问题,因为正则表达式匹配子串除非你锚定它们(在某些环境中,默认情况下会锚定它们 - 我认为Java会这样做。)

此功能仅适用于至少两位数,您在问题中发布的表达式也是如此。我认为这是故意的。如果没有,那么+在两种情况下都应该是*

答案 3 :(得分:2)

我认为

\d*[1-9]

效果更好。

答案 4 :(得分:2)

我认为(d%10 == 0)是测试可分性10的更好方法。

答案 5 :(得分:1)

Divisibility技巧对于不是小数的整数有效。

如果有人要验证这一点怎么办?

123.120

以非重要零结束。

因此123.12 / X和123.120 / X给出相同的结果 123.12%X和123.120%X相同 (这最后一个是无效的操作,因为值不是一个整数,所以不能得到浮点数/模数)

模块只能用于整数值(整数/整数)。

也有人可以试图寻找:

AnyTextWithNumbersNotEndingOnZero_0  <--- Not valid
AnyTextWithNumbersNotEndingOnZero    <--- Valid

所以最好的更清楚可以像这样:

/[0-9]*0$/
希望有所帮助。

啊!如果想要字母和数字但最后不是零:

/[0-9A-Za-z]*0$/

答案 6 :(得分:1)

如果您想使用正则表达式,请尝试使用此正则表达式

  ^([1-9]+)$  

使用纯JavaScript      var num = temp;

if(temp % 10 !==0){

//your code

}

答案 7 :(得分:0)

你可以尝试这个排除0

\d+[^0]?