正则表达式允许数字和单个点

时间:2011-04-06 17:54:28

标签: regex

允许数字为点的正则表达式是什么?关于这个\D只允许数字,但它不允许点,我需要它允许数字和一个点这是一个浮点值我需要在执行时有效jQuery中的keyup函数,但我需要的是正则表达式,它只允许我需要它允许的内容。

这将使用JavaScript replace函数原生来删除非数字和其他符号(点除外)。

干杯。

5 个答案:

答案 0 :(得分:39)

如果您想允许11.2

(?<=^| )\d+(\.\d+)?(?=$| )

如果您想允许11.2.1

(?<=^| )\d+(\.\d+)?(?=$| )|(?<=^| )\.\d+(?=$| )

如果您只想允许1.2(仅限浮动):

(?<=^| )\d+\.\d+(?=$| )

\d允许数字(\D允许任何数字)。

(?<=^| )检查该数字前面是空格还是字符串的开头。 (?=$| )确保字符串后跟一个空格或字符串的结尾。这可以确保该数字不是另一个数字的一​​部分,也可以是单词或任何内容的中间部分。

编辑:添加了更多选项,通过添加前瞻和后端来改进正则表达式,以确保数字是独立的(即不在单词或其他数字的中间。

答案 1 :(得分:17)

\d*\.\d*

<强>解释

\ d * - 任意位数

\。 - 一个点

\ d * - 更多数字。

这将匹配123.456.123123.,但不匹配123

如果你想要点是可选的,在大多数语言中(不了解jquery)你可以使用

\d*\.?\d*

答案 2 :(得分:3)

我的尝试是综合解决方案。

string = string.replace(',', '.').replace(/[^\d\.]/g, "").replace(/\./, "x").replace(/\./g, "").replace(/x/, ".");
string = Math.round( parseFloat(string) * 100) / 100;

此处的第一行解决方案:regex replacing multiple periods in floating number。它取代了逗号&#34;,&#34;用点&#34;。&#34; ;用x替换第一个逗号;删除所有点并将x替换回点。

第二行清除点后的数字。

答案 3 :(得分:2)

试试这个

boxValue = boxValue.replace(/[^0-9\.]/g,"");

此正则表达式仅允许文本框值中的数字和点。

答案 4 :(得分:0)

尝试以下表达式

n = static_cast<double>(a) / b;
n = a / static_cast<double>(b);
n = static_cast<double>(a) / static_cast<double>(b);