我有一个带有前导零的整数的正则表达式,它工作正常。我正在使用它:
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
中工作,那么这对我来说将是一个奖励。
我不知道如何构建正则表达式模式。所以,如果这是一个非常基本的问题,请原谅我。
答案 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;
}