Javascript 正则表达式从末尾没有0的字符串中获取数字(不除以10)
我需要从不以零结尾的字符串中获取数字(nod除以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-错误
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字符检查将起作用。