Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式从末尾没有0的字符串中获取数字(不除以10)_Javascript_Regex - Fatal编程技术网

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

Javascript 正则表达式从末尾没有0的字符串中获取数字(不除以10),javascript,regex,Javascript,Regex,我需要从不以零结尾的字符串中获取数字(nod除以10) 我试过了 RegExp('[0-9]*[1-9][^0]', 'i').test("dasda dasdas 111110 dasdasda") 但还是得到了11111 更新:如果文本为“dasda dasdas 11111 4 dasda”,我只需要获得结果 aasda 312 asdas-正确 asa 333 dasda-正确 dasd 10 sdas-错误 asda 11 asdas-正确 dasd 1110 sadasda-错误

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

我试过了

RegExp('[0-9]*[1-9][^0]', 'i').test("dasda dasdas 111110 dasdasda")
但还是得到了11111

更新:如果文本为“dasda dasdas 11111 4 dasda”,我只需要获得结果

aasda 312 asdas-正确

asa 333 dasda-正确

dasd 10 sdas-错误

asda 11 asdas-正确

dasd 1110 sadasda-错误

1000 asddasd-错误 1001 adas-正确

也许这会有帮助:

\d+[1-9]\b
如果只需要一个数字,如@Aguardientico所指出的:

\d*[1-9]\b

也许这会有帮助:

\d+[1-9]\b
如果只需要一个数字,如@Aguardientico所指出的:

\d*[1-9]\b

这也可以工作
\d*[^\D0](?!\d)


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

或者只是
\d*[1-9](?!\d)

这个怎么样:

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

这通过了您的测试用例,但也通过了测试用例 1) 假设可以有要匹配的单个数字,例如:
1
但不是
0

2) 假设您希望匹配由非空白字符包围的数字,例如
asdf123ghi

如果(2)不是这样,您可以放弃前瞻性,选择一个更便宜的选项(在这种情况下,选择Vitaliy的第二个解决方案)

这个怎么样:

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

这通过了您的测试用例,但也通过了测试用例 1) 假设可以有要匹配的单个数字,例如:
1
但不是
0

2) 假设您希望匹配由非空白字符包围的数字,例如
asdf123ghi


如果(2)不是这样,您可以放弃前瞻性,选择一个更便宜的选项(在这种情况下,选择Vitaliy的第二个解决方案)

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

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

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

有多种方法,但要测试匹配,以下方法应该起作用:

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

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

该字符串的预期结果是什么?发布更多的例子以及他们的预期结果!添加
\b
作为单词边界
“asda 1230 asda”
“asda 123 asda 230 asda 110”
“asda112asda”
“asda”
怎么样?该字符串的期望结果是什么?发布更多的例子以及他们的预期结果!添加
\b
作为单词边界如何
“asda 1230 asda”
“asda 123 asda 230 asda 110”
“asda 112asda”
“asda”
?一个小改动建议:
\d*[1-9]\b
它也将匹配,这也将捕获一个数字(如果必要的话)一个小改动建议:
\d*[1-9]\b
它也会匹配是的,这也会捕获一个数字(如果必要的话)。我不确定你在说什么。但是,如果您使用上述正则表达式测试该字符串,则会得到false。很抱歉,它与
[[01
100$
匹配,这是因为单词边界,\b检测单词和非单词的相交位置。单词类定义为[A-Za-z0-9]我建议使用单词边界,因为它通常工作良好,op的示例中没有一个包含该字符。根据输入,使用特定的(自定义)字符类代替\b字符检查将起作用。我不确定你在说什么。但是,如果你用上面的正则表达式测试该字符串,你会得到false。很抱歉,它匹配
[[01
100$
这是因为单词边界,\b检测单词和非单词的相交位置。单词类定义为[A-Za-z0-9]我建议使用word边界,因为它通常运行良好,op的示例中没有一个包含该字符。根据输入,使用特定(自定义)字符类代替\b字符检查将起作用。