允许数字和为点的正则表达式是什么?关于这个\D
只允许数字,但它不允许点,我需要它允许数字和一个点这是一个浮点值我需要在执行时有效jQuery中的keyup
函数,但我需要的是正则表达式,它只允许我需要它允许的内容。
这将使用JavaScript replace
函数原生来删除非数字和其他符号(点除外)。
干杯。
答案 0 :(得分:39)
如果您想允许1
和1.2
:
(?<=^| )\d+(\.\d+)?(?=$| )
如果您想允许1
,1.2
和.1
:
(?<=^| )\d+(\.\d+)?(?=$| )|(?<=^| )\.\d+(?=$| )
如果您只想允许1.2
(仅限浮动):
(?<=^| )\d+\.\d+(?=$| )
\d
允许数字(\D
允许任何但数字)。
(?<=^| )
检查该数字前面是空格还是字符串的开头。 (?=$| )
确保字符串后跟一个空格或字符串的结尾。这可以确保该数字不是另一个数字的一部分,也可以是单词或任何内容的中间部分。
编辑:添加了更多选项,通过添加前瞻和后端来改进正则表达式,以确保数字是独立的(即不在单词或其他数字的中间。
答案 1 :(得分:17)
\d*\.\d*
<强>解释强>
\ d * - 任意位数
\。 - 一个点
\ d * - 更多数字。
这将匹配123.456
,.123
,123.
,但不匹配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);