我正在尝试创建一个正则表达式,以允许从 0 到 365 以及可选的小数,但 365 应该将所有可选的小数数字仅设为 0。
^(0?[0-9]?[0-9]|[1-2][0-9][0-9]|3[0-5][0-9])(\.\d+)|(36[0-5])(\.[0]+)?$
这仅接受 365 和 365 后跟小数(如 (365.0,365.00)),但仅接受小数 1.0、10.0,100.0,而不接受小数 1,10,100 不确定发生了什么。任何帮助将不胜感激。
最佳答案
使用(参见a demo on regex101.com)
^(?:\d|[1-9]\d|[12]\d{2}|3[0-5]\d|36[0-4]|365\.0*)(?:\.\d+)?$
或者(更好!):
^\d+(?:\.\d+)?$
然后以编程方式比较这些值。
后者可能是:
let data = `0.00
123.2121212
365.00
365.11
-1000
299
1000
365.1`;
let regex = /^\d+(?:\.\d+)?$/gm;
while (found = regex.exec(data)) {
number = parseFloat(found[0]);
if (number >= 0 && number <= 365) {
console.log(number + " (" + found[0] + ")");
}
}
关于javascript - 正则表达式允许 0 到 365 带小数,但 365 的所有小数位应仅为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55120884/