如何使用正则表达式验证十进制数

问题描述 投票:0回答:1

我有以下json:

[
    {
    "id": 1,
    "name": "Jack",
    "salary": 23.03
    },
    {
    "id": 2,
    "name": "Luke",
    "salary": 0.00
    }
]

我需要验证小数点后只有 2 位数字。

我正在做这个:

* def salary = $response..salary
* karate.appendTo(salary)
* def strs = karate.map(salary, function(x){ return x + '' })
* match each strs == '#regex [0-9].+\\.[0-9]{2}'

当我的工资为“23.40”或“12.30”时,验证是正确的。问题是,当我有 0、2 或 3 时,验证会抛出以下错误:

1st error

2nd error

karate
1个回答
0
投票

我个人觉得尝试验证 JSON 中数字类型的形状是浪费时间,即使格式不同,数字也是相同的。当您尝试转换为字符串时,您无法控制小数点。例如,试试这个:

* def response = [ { "id": 1, "name": "Jack", "salary": 23.03 }, { "id": 2, "name": "Luke", "salary": 0.00 } ]
* def salaries = response.map(x => x.salary + '')
* print salaries

你得到:

[ "23.03", "0" ]

所以我想说你正在尝试的东西是不可能或不支持的。

© www.soinside.com 2019 - 2024. All rights reserved.