正则表达式只允许文本框中的单个点

时间:2014-07-31 07:57:24

标签: javascript jquery regex

我有一个文字输入。

我写了一个正则表达式来屏蔽除.-之外的所有特殊字符。现在,如果用户错误地在输入中输入两个.(点),那么使用当前的正则表达式

var valueTest='225..36'

valueTest.match(/[^-.\d]/)

我预计这个数字不会通过这个条件

如何处理此案例。我只想在输入字段中输入一个 .(点),因为它是一个数字。

4 个答案:

答案 0 :(得分:8)

我认为你的意思是,

^-?\d+(?:\.\d+)?$

DEMO

它允许带有或不带小数点的正数和负数。

<强>解释

  • ^断言我们刚开始。
  • -?可选-符号。
  • \d+匹配一个或多个数字。
  • (?:开始非捕获组。
  • \.匹配文字点。
  • \d+匹配一个或多个数字。
  • ?使整个非捕获组成为可选组。
  • $断言我们到底。

答案 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 +)?$ /