Regex 正则表达式验证中的十进制或数值
我正在尝试使用正则表达式验证来只检查十进制值或数字值。但用户输入的数值不是第一位数字“0”Regex 正则表达式验证中的十进制或数值,regex,validation,Regex,Validation,我正在尝试使用正则表达式验证来只检查十进制值或数字值。但用户输入的数值不是第一位数字“0” 如何操作?1-9范围内的数字,后跟零或更多其他数字: ^[1-9]\d*$ 允许带有可选小数点和数字的数字。1-9范围内的数字,后跟零或多个其他数字,然后可选地后跟小数点,后跟至少一个数字: ^[1-9]\d*(\.\d+)?$ 注意事项: ^和$锚定到开头和结尾,基本上表示整个字符串必须与模式匹配 ()?在括号中匹配整个内容的0或1 更新以处理逗号: 在正则表达式中,具有特殊含义-匹配任何单个字
如何操作?1-9范围内的数字,后跟零或更多其他数字:
^[1-9]\d*$
允许带有可选小数点和数字的数字。1-9范围内的数字,后跟零或多个其他数字,然后可选地后跟小数点,后跟至少一个数字:
^[1-9]\d*(\.\d+)?$
注意事项:
和^
锚定到开头和结尾,基本上表示整个字符串必须与模式匹配$
在括号中匹配整个内容的0或1()?
具有特殊含义-匹配任何单个字符。要逐字匹配字符串中的
,需要使用\
转义
。这就是上面regexp中\.
的含义。因此,如果您想使用逗号,则模式简单:
^[1-9]\d*(,\d+)?$
进一步更新以处理逗号和句号
如果要在数字组之间允许a,在整数和小数部分之间允许a,,请尝试:
^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$
^[1-9][\.\d]*(,\d+)?$
i、 e.这是一个范围为1-9的数字,后跟最多2个其他数字,然后是零组或多组句号,后跟3个数字,然后可选逗号和数字,如前所述
如果要允许数字之间的任何位置出现,请尝试:
^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$
^[1-9][\.\d]*(,\d+)?$
i、 e.数字1-9后跟零或多个数字或句号(可选后跟逗号和一个或多个数字)。我也有同样的问题,但我还希望“.25”是一个有效的十进制数字。以下是我使用JavaScript的解决方案:
function isNumber(v) {
// [0-9]* Zero or more digits between 0 and 9 (This allows .25 to be considered valid.)
// ()? Matches 0 or 1 things in the parentheses. (Allows for an optional decimal point)
// Decimal point escaped with \.
// If a decimal point does exist, it must be followed by 1 or more digits [0-9]
// \d and [0-9] are equivalent
// ^ and $ anchor the endpoints so tthe whole string must match.
return v.trim().length > 0 && v.trim().match(/^[0-9]*(\.[0-9]+)?$/);
}
我的trim()方法在哪里
String.prototype.trim = function() {
return this.replace(/(^\s*|\s*$)/g, "");
};
Matthew DesVoigne这是一个很好的数字正则表达式。它接受带逗号和小数的数字
/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/
如果需要使用点、逗号、正数和负数验证十进制,请尝试以下方法:
Object testObject = "-1.5";
boolean isDecimal = Pattern.matches("^[\\+\\-]{0,1}[0-9]+[\\.\\,]{1}[0-9]+$", (CharSequence) testObject);
祝你好运。我已经测试了所有给定的正则表达式,但不幸的是没有一个通过这些测试:
String []goodNums={"3","-3","0","0.0","1.0","0.1"};
String []badNums={"001","-00.2",".3","3.","a",""," ","-"," -1","--1","-.1","-0", "2..3", "2-", "2...3", "2.4.3", "5-6-7"};
"^(-?0[.]\\d+)$|^(-?[1-9]+\\d*([.]\\d+)?)$|^0$"
以下是我写的通过所有这些测试的最好作品:
String []goodNums={"3","-3","0","0.0","1.0","0.1"};
String []badNums={"001","-00.2",".3","3.","a",""," ","-"," -1","--1","-.1","-0", "2..3", "2-", "2...3", "2.4.3", "5-6-7"};
"^(-?0[.]\\d+)$|^(-?[1-9]+\\d*([.]\\d+)?)$|^0$"
以下是满足上述要求的最佳方案:
^[0-9]{1,3}(,[0-9]{3})*(([\\.,]{1}[0-9]*)|())$
这是我用来验证数字的正则表达式:
^(-?[1-9]+\\d*([.]\\d+)?)$|^(-?0[.]\\d*[1-9]+)$|^0$
有效数字:
String []validNumbers={"3","-3","0","0.0","1.0","0.1","0.0001","-555","94549870965"};
String []invalidNumbers={"a",""," ","-","001","-00.2","000.5",".3","3."," -1","--1","-.1","-0"};
无效号码:
String []validNumbers={"3","-3","0","0.0","1.0","0.1","0.0001","-555","94549870965"};
String []invalidNumbers={"a",""," ","-","001","-00.2","000.5",".3","3."," -1","--1","-.1","-0"};
/([0-9]+[,]*)+/
匹配任何带或不带彗差或点的数字
它可以匹配
122
122,354
122.88
112,262,123.7678
错误:它也匹配262.43773883(但这并不重要)事实上,没有一个给出的答案完全涵盖了请求。
由于OP没有提供具体的用例或数字类型,我将尝试涵盖所有可能的用例和排列 正则数 全阳性 这个数字通常称为无符号整数,但也可以称为正非小数,包括零。这包括
0
、1
和99999
等数字包含此验证的正则表达式是:
/^(0|[1-9]\d*)$/
/^-?(0|[1-9]\d*)$/
/^(0|[1-9]\d*)(\.\d+)?$/
/^-?(0|[1-9]\d*)(\.\d+)?$/
整体正负
这个数字通常称为有符号整数,但也可以称为非小数。这包括0
、1
、99999
、-99999
、-1
和。包含此验证的正则表达式是:
/^(0|[1-9]\d*)$/
/^-?(0|[1-9]\d*)$/
/^(0|[1-9]\d*)(\.\d+)?$/
/^-?(0|[1-9]\d*)(\.\d+)?$/
正如您可能注意到的,我还将-0
作为一个有效数字。但是,有些人可能会对这种用法提出异议,并指出这不是一个实数(您可以阅读更多关于带符号零的内容)。因此,如果您想从这个正则表达式中排除这个数字,您应该使用以下内容:
/^-?(0|[1-9]\d*)(?<!-0)$/
有人可能会说,像.1
、.0
和.00651
(分别与0.1
、0.0
和0.00651
相同)这样的数字也是有效的小数,我不能不同意。下面是一个额外支持这种格式的正则表达式:
/^(0|[1-9]\d*)?(\.\d+)?(?<=\d)$/
对于非-0
信徒:
/^(?!-0(\.0+)?$)-?(0|[1-9]\d*)(\.\d+)?$/
对于希望同时支持不可见零表示的用户,如.1
,-.1
,请使用以下正则表达式:
/^-?(0|[1-9]\d*)?(\.\d+)?(?<=\d)$/
带科学符号的数字(又称指数符号)
有些人可能希望在验证中支持带有科学字符e
的数字,顺便说一句,这是一个绝对有效的数字,它是为表示很长的数字而创建的。你可以阅读更多关于科学记数法的内容。这些数字通常类似于1e3
(即1000
)、1e-3
(即0.001),并且完全受许多主要编程语言(例如JavaScript)的支持。您可以通过检查表达式'1e3'==1000
是否返回true
来测试它 我将为以上所有部分提供支持,包括带有科学符号的数字 正则数 整正数正则表达式验证,支持像
6e4
,16e-10
,0e0
这样的数字,也支持像0
,11
这样的正则数:
/^(0|[1-9]\d*)(e-?(0|[1-9]\d*))?$/i
整正数和负数正则表达式验证,支持像-6e4
、-16e-10
、-0e0
这样的数字,但也支持像-0
、-11
这样的正则数以及上面的所有整正数:
/^-?(0|[1-9]\d*)(e-?(0|[1-9]\d*))?$/i
针对非-0
信徒的完整正数和负数正则表达式验证,与上述相同,但现在它禁止-0
、-0e0
、-0e5
和-0e-6
等数字:
/^(?!-0)-?(0|[1-9]\d*)(e-?(0|[1-9]\d*))?$/i
/^(?!-0(\.0+)?(e|$))-?(0|[1-9]\d*)(\.\d+)?(e-?(0|[1-9]\d*))?$/i
分数
正数正则表达式验证,也支持上面的整数,加上像0.1e3
,56.0e-3
,0.0e10
和1.010e0
:
/^(0|[1-9]\d*)(\.\d+)?(e-?(0|[1-9]\d*))?$/i
正数
/^\d*(\.)?(\d{0,2})?$/