gpt4 book ai didi

javascript - 使用数组或变量的 jquery 验证器正则表达式

转载 作者:行者123 更新时间:2023-11-28 15:28:50 24 4
gpt4 key购买 nike

我正在使用带有正则表达式的 jquery 验证器插件来测试仅接受数字和小数的匹配输入字段,例如:1.0 到 1.984375(1/64 增量),它可以工作,但正则表达式很长,我需要多次重复使用它次,但小数点前面的数字略有变化。

我想知道是否有一种方法可以使用数组作为正则表达式的小数部分,就像这样......

var decimals = (\.015625|\.03125|\.046875...)?$

var decimals = (\.015625, \.03125, \.046875...)

然后在验证器中有类似...的内容

regex=/^4+decimal+/

这样的事情可能吗?

编辑:我使用fraction.js将分数添加到plalx代码中,可以在这里找到... http://hypervolu.me/~erik/fraction.js/ .

var fractionsAll=range(1/64, 63/64, 1/64).map(convertToFraction).join('|');

function convertToFraction(num){
return new Fraction(num)
};

示例:1-10

regexp: new RegExp('^([1-9]|10$)(\\.('+decimalsAll+')|\\s('+fractionsAll+'))?$')

最佳答案

像这样的事情怎么办? RegExp 构造函数允许从字符串构造动态正则表达式。

var decimals = range(.015625, 0.984375, 1/64).map(removeDotAndBefore).join('|');

var regex = new RegExp('^4(\\.(' + decimals + '))?$');


function range(from, to, increment) {
var values = [];

for (; from <= to; from += increment) values.push(from);

return values;
}

function removeDotAndBefore(num) {
return num.toString().replace(/^\d+\./, '');
}

请注意,您应该能够使用模运算符来了解数字是否可以被 1/64 整除。

function isOne64Increment(num) { return !(num % (1/64)); }

range(.015625, 0.984375, 1/64).every(isOne64Increment); //true

关于javascript - 使用数组或变量的 jquery 验证器正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28163149/

24 4 0
文章推荐: ios - 如何使用良好的 OO 设计以编程方式创建动态 View
文章推荐: javascript - Angular JS CSS 双向更新
文章推荐: javascript - Angular 在 orderBy 之后获取中间索引
文章推荐: CSS Accordion 菜单 - 如何扩展和超链接
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com