【问题标题】:Regular expression for double双倍的正则表达式
【发布时间】:2014-03-08 00:04:21
【问题描述】:

我正在尝试使用数据注释中的正则表达式验证双精度。

我需要一个验证如下的正则表达式:

通过:

  • 1,00
  • 0,01
  • 0,00
  • 123544,23
  • 266,00

始终保留 2 位小数。

失败:

  • ,22
  • 0,
  • ,00
  • 1,0
  • 1,2

到目前为止,我有 ^\d+,\d{2}$

但是当数字以零结尾时它会失败。例如,23,00 在应该通过时失败。

注意:由于我的文化,我使用逗号作为分隔符。

编辑:我正在为 jQuery Validate 使用全球化。在视图中我有这个脚本。

    $(document).ready(function () {
    Globalize.culture('es-AR');

    $.validator.methods.number = function (value, element) {
        return this.optional(element) || !isNaN(Globalize.parseFloat(value));
    }

    $.validator.methods.range = function (value, element, param) {
        return this.optional(element) || (Globalize.parseFloat(value) >= param[0] && Globalize.parseFloat(value) <= param[1]);
    }

});

【问题讨论】:

标签: regex double data-annotations


【解决方案1】:

也许这应该如你所愿:

^\d+[,](\d{2})(?<=\d+)$

【讨论】:

  • 它的工作方式和以前一样。不接受 23,00 :/
  • 我用那个表达式再次尝试了它,它也适用于数字 23,00。 '"23,00".match(new RegExp(/^\d+[,](\d{2})(?!=\d+)$/)) -> ["23,00", "00"] - 比赛,好的 | "1,00".match(new RegExp(/^\d+[,](\d{2})(?!=\d+)$/)) -> ["1,00", "00"] -匹配,好的 | "123544,23".match(new RegExp(/^\d+[,](\d{2})(?!=\d+)$/)) -> ["123544,23", "23"] -匹配,好的 | ",00".match(new RegExp(/^\d+[,](\d{2})(?!=\d+)$/)) -> null - 不匹配,ok | "1".match(new RegExp(/^\d+[,](\d{2})(?!=\d+)$/)) -> null - 不匹配,ok'
  • 你尝试用什么语言?
  • 其次,我用 JavaScript 编写了该代码。我在 Firefox 中使用 Firebug 对其进行了测试。
  • 有些东西是 MVC 不喜欢的。我尝试删除客户端验证,但在服务器中它也失败了。如果我输入 12,01 有效,但如果我输入 12,00 则无效..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
相关资源
最近更新 更多