java中正十进制值和负十进制值的正则表达式
用于正负十进制值的正则表达式,以便 使用模式和匹配器与字符串匹配,以实现正确的实现 有谁能给我提供这个试试这个:java中正十进制值和负十进制值的正则表达式,java,regex,Java,Regex,用于正负十进制值的正则表达式,以便 使用模式和匹配器与字符串匹配,以实现正确的实现 有谁能给我提供这个试试这个: [+-]?\d+\.\d+ 试试这个!我也用过这种方法 "^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$" 规则: ex: ^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$ ^ # Start of string [0-9]{1,12} # Match 1-12 digits (i. e. 0-999999999999) (?
[+-]?\d+\.\d+
试试这个!我也用过这种方法
"^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$"
规则:
ex: ^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$
^ # Start of string
[0-9]{1,12} # Match 1-12 digits (i. e. 0-999999999999)
(?: # Try to match...
\. # a decimal point
[0-9]{1,4} # followed by one to three digits (i. e. 0-9999)
)? # ...optionally
$ # End of string
下面突出显示的是返回此正则表达式的TRUE
的数字:
请注意,这将无法识别诸如“.4”(无前导零)或“10”(无小数)之类的模式。但考虑到“问题”的模糊性,我不知道这是否是个问题;既然OP说的是“小数点”,我认为小数点是必须的,但我也不确定可选的整数威尔,如果我们使用强制小数点,它总是可以作为“[+-]?\d*\.\d+”来完成。处理可选的前导0,至少。'Decimal'不表示非整数。如果OP说的是“二进制”或“八进制”呢?所有这些限定符只是限制了数字的范围。所有这些数字都可能有分数,也可能没有分数。@BlairHippo给出了我能找到的最接近实际的答案。让我非常接近@“^(+-]?\d*\.\d+$”将第二个+替换为*以匹配“.4”之类的内容(归功于下面错误答案中的注释)。对于任何使用此方法对数字文本框进行验证的人,如果您的正则表达式引擎支持它,您可以使用开始和结束锚来包装表达式,如
^(+\\-)?([0-9]+(\.[0-9]+)$
@kevin628请记住,某些正则表达式引擎需要打开一个标志才能使用这些开始和结束锚。例如,我知道Java正则表达式需要(?m)在开始时使用^
和$
符号。
ex: ^-?[0-9]{1,12}(?:\.[0-9]{1,4})?$
^ # Start of string
[0-9]{1,12} # Match 1-12 digits (i. e. 0-999999999999)
(?: # Try to match...
\. # a decimal point
[0-9]{1,4} # followed by one to three digits (i. e. 0-9999)
)? # ...optionally
$ # End of string
+ (BOOL)isStringADecimalNumber:(NSString *)string
{
NSString *regex = @"([+]|-)?(([0-9]+[.]?[0-9]*)|([0-9]*[.]?[0-9]+))";
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL stringIsADecimalNumber = [test evaluateWithObject:string];
return stringIsADecimalNumber;
}