【问题标题】:Altering a regex float expression to enforce a leading number before decimal point更改正则表达式浮点表达式以强制小数点前的前导数字
【发布时间】:2020-06-25 04:52:09
【问题描述】:

我有以下正则表达式,它通过 jquery 验证 html 中的文本框元素。

/^-?\d*[.]?\d*$/

我想更改此设置,以便在小数点前面有前导数字的情况下添加小数点。

如果有人能为我提供解决方案,我将不胜感激。

【问题讨论】:

  • 您确定要匹配 "23." 并且不想匹配较大字符串中的字符串(例如,“我钓到的鱼重 23.7 公斤。”)?
  • 为什么要坚持小数点前的前导零?没有 JavaScript 也很“快乐”...我的建议是以某种形式在您的页面上回显您读取输入的方式并在 前导零。
  • 在急于展示你的代码之前,你应该用文字陈述问题,然后是一两个例子,说明每个例子是否正常。

标签: javascript html regex


【解决方案1】:

只需在第一个 \d 之后添加 + 量词

^-?\d+[.]?\d*$

const n1 = '.1';
const n2 = '0.1';
const n3 = '-0.1';
const regex = /^-?\d+[.]?\d*$/;

console.log(`${n1}  ==> ${regex.test(n1)}`);
console.log(`${n2} ==> ${regex.test(n2)}`);
console.log(`${n3} ==> ${regex.test(n3)}`);

编辑:

上述模式将匹配小数点后没有数字的字符串,例如"1."。如果您想在小数点存在的情况下强制使用小数点后的数字,请使用以下正则表达式

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

const n1 = '1.';
const n2 = '1.1';
const regex = /^-?\d+(\.\d+)?$/;

console.log(`${n1}  ==> ${regex.test(n1)}`);
console.log(`${n2} ==> ${regex.test(n2)}`);

【讨论】:

  • 所以用“+”替换“*”?
  • 它不允许我输入负号作为第一个字符
  • 我觉得这样会更好^[-]?\d+([.]\d+)?$
  • @acbay 虽然 OP 没有指定是否应该匹配 1. 等字符串,但我认为它值得包含在答案中。答案已更新。谢谢。
  • 不不,你的回答完全回答了这个问题,我知道它没有特别问,我只是想帮助汉克多一点。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
相关资源
最近更新 更多