【发布时间】:2011-04-06 17:54:28
【问题描述】:
什么是允许数字和点的正则表达式?关于这个\D 只允许数字,但它不允许点,我需要它来允许数字和 one 点,这是指一个浮点值,我在执行 @ 时需要有效jQuery 中的 987654322@ 函数,但我需要的只是正则表达式,它只允许我需要它允许的内容。
这将在 JavaScript 的原生 replace 函数中移除非数字和其他符号(点除外)。
干杯。
【问题讨论】:
标签: regex
什么是允许数字和点的正则表达式?关于这个\D 只允许数字,但它不允许点,我需要它来允许数字和 one 点,这是指一个浮点值,我在执行 @ 时需要有效jQuery 中的 987654322@ 函数,但我需要的只是正则表达式,它只允许我需要它允许的内容。
这将在 JavaScript 的原生 replace 函数中移除非数字和其他符号(点除外)。
干杯。
【问题讨论】:
标签: regex
如果你想允许1和1.2:
(?<=^| )\d+(\.\d+)?(?=$| )
如果你想允许1、1.2和.1:
(?<=^| )\d+(\.\d+)?(?=$| )|(?<=^| )\.\d+(?=$| )
如果您只想允许1.2(仅浮动):
(?<=^| )\d+\.\d+(?=$| )
\d 允许数字(而\D 允许任何但数字)。
(?<=^| ) 检查数字前面是否有空格或字符串的开头。 (?=$| ) 确保字符串后跟一个空格或字符串的结尾。这样可以确保该数字不是另一个数字的一部分,也不是位于单词或任何内容的中间。
编辑:添加更多选项,通过添加前瞻和后置改进正则表达式以确保数字是独立的(即不在单词或其他数字中间。
【讨论】:
Regex.Replace("xyzzy", @"\d*(\.\d+)?", "!"); 的结果将是 !x!y!z!z!y!。我很确定 JavaScript 中的结果是一样的。由于一切都是可选的,因此正则表达式将匹配每个位置。
\d*\.\d*
说明:
\d* - 任意位数
\。 - 一个点
\d* - 更多数字。
这将匹配123.456、.123、123.,但不匹配123
如果您希望点是可选的,在大多数语言中(不了解 jquery)您可以使用
\d*\.?\d*
【讨论】:
\D 是任何字符除了位。 \d 就是你的意思。
\D 是“匹配一个数字”的倒数——它会匹配除数字以外的任何东西!
\D。我知道在 Python 中 \d 表示“数字”,\D 表示“除了数字之外的任何东西”,但我认为如果 OP 提到 \D 那么它在 jQuery 中一定是不同的。根据你们的cmets,显然我的第一个想法是正确的,我应该坚持下去:)
试试这个
boxValue = boxValue.replace(/[^0-9\.]/g,"");
此正则表达式将只允许文本框中的值中包含数字和点。
【讨论】:
我的尝试是组合解决方案。
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。它将逗号“,”替换为点“。” ;用 x 替换第一个逗号;删除所有点并将 x 替换回点。
第二行清除点后的数字。
【讨论】:
试试下面的表达式
/^\d{0,2}(\.\d{1,2})?$/.test()
【讨论】: