正则表达式从字符串中获取数字,结尾没有0(不除以10)

时间:2017-03-16 16:44:06

标签: javascript regex

我需要从不以零结尾的字符串中获取数字(nod除以10)

我试过

RegExp('[0-9]*[1-9][^0]', 'i').test("dasda dasdas 111110 dasdasda")

但仍然得到11111

更新:如果文字为“dasda dasdas 111114 dasdasda”,我只需要获得结果。

aasda 312 asdas - 是的,

asa 333 dasda - true,

dasd 10 sdas - false,

asda 11 asdas - 是的,

dasd 1110 sadasda - false

1000 asddasd - false 1001 adas -true

4 个答案:

答案 0 :(得分:2)

也许这会有所帮助:

\d+[1-9]\b

如果只需要一个数字,@ Aguardientico指出:

\d*[1-9]\b

example

答案 1 :(得分:1)

这也可以起作用\d*[^\D0](?!\d)
或只是\d*[1-9](?!\d)

答案 2 :(得分:1)

这个怎么样:

\d*[1-9](?!\d)\

d*匹配任何数字(重复的数字) - 或者没有(对于单个数字的数字很重要!)
[1-9]确保最后一位数字为非零 (?!\d)负向前瞻以确保下一个字符不是数字

这会通过您的测试用例,但
1)假设您可以匹配单个数字,例如: 1但不是0
2)假设您要匹配由非空格字符包围的数字,例如asdf123ghi

如果不是(2),你可以放弃前瞻以获得更便宜的选择(在这种情况下使用Vitaliy的第二个解决方案)。

答案 3 :(得分:0)

有多种方法可以测试匹配,但以下方法应该有效:

/[\b[0-9]+[^0]{1}\b/ig.test(some_string);

这将测试字符串中是否有一个不以0结尾的数字。\ b是单词边界并将匹配约束为单词边界,空间用于所有意图和目的。 [0-9] +是具有至少一个匹配的任意数量的连续数字的字符类。然后[^ 0] {1}表示长度为1的任何非0字段。最后一部分是使其起作用的特殊约束。