Javascript 不带前导零的整数对数值的正则表达式

Javascript 不带前导零的整数对数值的正则表达式,javascript,regex,Javascript,Regex,我有一个前导为零的整数正则表达式,它工作得很好。我使用它的方式如下: value = value.replace(/[^0-9]/, ''); 现在,我想要另一个不带前导零的整数正则表达式。因此,我从stackoverflow的答案中得到了下面提到的正则表达式: [1-9]+[0-9]* 由于我使用的是string.replace,因此必须反转正则表达式。因此,我的最终代码如下所示: value = value.replace(/^(?![1-9]+[0-9]*)$/, '');

我有一个前导为零的整数正则表达式,它工作得很好。我使用它的方式如下:

  value = value.replace(/[^0-9]/, '');
现在,我想要另一个不带前导零的整数正则表达式。因此,我从stackoverflow的答案中得到了下面提到的正则表达式:

[1-9]+[0-9]*
由于我使用的是
string.replace
,因此必须反转正则表达式。因此,我的最终代码如下所示:

  value = value.replace(/^(?![1-9]+[0-9]*)$/, '');
但现在结果值总是
为空

期望值:

应允许用户键入以下示例:

123456
123
78
用户应无法键入以下字符:

0123
e44
02565
asdf
02asf
754ads
另外,如果我得到一个只包含小数的正则表达式,而不带前导0和no
e
,并且应该使用
value.replace
,那么这对我来说是一个奖励


我不知道如何构造正则表达式模式。所以,如果这是一个非常基本的问题,那么请原谅我。

我会分两步来做

首先移除前导部分(移除开始时不是1-9的任何东西)

然后拆下尾部(匹配开头的任何数字,然后拆下其余部分)

对于小数,请使用此项(drkunibar):


我会分两步来做

首先移除前导部分(移除开始时不是1-9的任何东西)

然后拆下尾部(匹配开头的任何数字,然后拆下其余部分)

对于小数,请使用此项(drkunibar):

试一试

返回44

尝试

返回44请尝试以下操作:

match = /^[1-9]\d*$/.test(value);
匹配将包含一个布尔值,如果用户输入的数字前导中没有0,则为true;如果输入的数字前导中没有0,则为false。

请尝试以下操作:

match = /^[1-9]\d*$/.test(value);

匹配将包含一个布尔值,如果用户输入的数字前导中没有0,则为true;对于前导中没有0的数字以外的任何数字,则为false。

我有同样的问题,但我也有类似于1.11的十进制数 但是我通过01.11或001.11类型的输入来限制用户 已经为小数点编写了正则表达式代码。 如何合并两个正则表达式

if (/^\d*(\.\d{0,2})?$/.test(value)) {
   isValid = true;
}

我有同样的问题,但我也有像1.11这样的十进制数 但是我通过01.11或001.11类型的输入来限制用户 已经为小数点编写了正则表达式代码。 如何合并两个正则表达式

if (/^\d*(\.\d{0,2})?$/.test(value)) {
   isValid = true;
}

现在还不太清楚这段代码的总体目标是什么,您实际上想实现什么?在调用replace之前,value变量的内容是什么。@HunterMcMillen的目标是不允许用户输入除数字以外的任何内容,而不带前导0。目前我希望用户输入整数。但在另一个字段中,我希望用户输入一个不带前导0的十进制数。@AlekhyaSatya值是一个字符串,由用户输入。因此,它可以是字符串类型的任何东西。不要使用
.replace
,使用
.test()
.matches()
方法。这段代码的总体目标不是很清楚,您实际上想完成什么?在调用replace之前,value变量的内容是什么。@HunterMcMillen的目标是不允许用户在没有前导0的情况下输入除数字以外的任何内容。目前我希望用户输入整数。但在另一个字段中,我希望用户输入一个不带前导0的十进制数。@AlekhyaSatya值是一个字符串,由用户输入。所以,它可以是字符串类型的任何东西。不要使用
.replace
,使用
.test()
.matches()
方法这很棘手!!!工作起来很有魅力。非常感谢。如果可能的话,你能给我同样的小数吗?听起来很棘手!!!工作起来很有魅力。非常感谢。如果可能的话,你能给我提供同样的小数吗?谢谢你的建议。但是我的代码是这样写的,我不能使用match或test,因为我代码中的所有其他模式都依赖于replace,并且我使用的函数对于我的项目来说是非常通用的。谢谢你的建议。但是我的代码是这样写的,我不能使用match或test,因为我代码中的所有其他模式都依赖于replace,并且我使用的函数对于我的项目来说非常通用。实际上,这是一个比我上面给出的解决方案好得多的解决方案,并且完全符合您的要求。“$1”部分很重要,因为它用括号中匹配的内容替换了所有内容。实际上,这是一个比我上面给出的解决方案更好的解决方案,并且完全符合您的要求。“$1”部分很重要,因为它用括号中匹配的内容替换所有内容。
match = /^[1-9]\d*$/.test(value);
if (/^\d*(\.\d{0,2})?$/.test(value)) {
   isValid = true;
}