我有一个文字输入。
我写了一个正则表达式来屏蔽除.
和-
之外的所有特殊字符。现在,如果用户错误地在输入中输入两个.
(点),那么使用当前的正则表达式
var valueTest='225..36'
valueTest.match(/[^-.\d]/)
我预计这个数字不会通过这个条件
如何处理此案例。我只想在输入字段中输入一个 .
(点),因为它是一个数字。
答案 0 :(得分:8)
我认为你的意思是,
^-?\d+(?:\.\d+)?$
它允许带有或不带小数点的正数和负数。
<强>解释强>
^
断言我们刚开始。-?
可选-
符号。\d+
匹配一个或多个数字。(?:
开始非捕获组。\.
匹配文字点。\d+
匹配一个或多个数字。?
使整个非捕获组成为可选组。$
断言我们到底。 li>
答案 1 :(得分:3)
如果您只想处理号码,可以试试这个:
valueTest.match(/^-?\d+(\.\d+)?$/)
答案 2 :(得分:2)
在这种情况下,您可以完全避免使用正则表达式。
例如
String[] input = { "225.36", "225..36","-225.36", "-225..36" };
for (String s : input) {
try {
Double d = Double.parseDouble(s);
System.out.printf("\"%s\" is a number.%n", s);
}
catch (NumberFormatException nfe) {
System.out.printf("\"%s\" is not a valid number.%n", s);
}
}
<强>输出强>
"225.36" is a number.
"225..36" is not a valid number.
"-225.36" is a number.
"-225..36" is not a valid number.
答案 3 :(得分:2)
使用以下注册表符合您的要求。
/ ^ \ d +(。\ d +)?$ /