正则表达式为整数的反对而不带前导零

时间:2018-04-04 18:29:58

标签: javascript regex

我有一个带有前导零的整数的正则表达式,它工作正常。我正在使用它:

  value = value.replace(/[^0-9]/, '');

现在,我想要一个不带前导零的整数的正则表达式。所以,我从stackoverflow回答中得到了下面提到的正则表达式:

[1-9]+[0-9]*

当我使用string.replace时,我必须反转正则表达式。所以我的最终代码如下:

  value = value.replace(/^(?![1-9]+[0-9]*)$/, '');

但现在结果值始终为empty

期望:

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

123456
123
78

用户不能输入以下字符:

0123
e44
02565
asdf
02asf
754ads

另外,如果我只获得一个正则小数,但没有前导0而没有e,并且应该在value.replace中工作,那么这对我来说将是一个奖励。

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

4 个答案:

答案 0 :(得分:2)

尝试

value = "e044".replace(/^.*?([1-9]+[0-9]*).*$/, '$1');

返回44

答案 1 :(得分:1)

我会分两步完成。

首先删除前导部分(删除开头不是1-9的任何内容)

value = value.replace(/^[^1-9]*/, '');

然后删除尾随部分(匹配开头的任何数字并删除其余部分)

value = value.replace(/(?![0-9]+).*/, '');
小数的

使用此(信用drkunibar):

value = value.replace(/.*?([1-9]+[0-9]*[\.]{0,1}[0-9]*).*/,'$1');

答案 2 :(得分:1)

请试试这个:

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

匹配将包含一个布尔值,如果用户在前导中输入一个不带0的数字,则返回true,false表示除了数字中没有0的数字以外的任何数字。

答案 3 :(得分:0)

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

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