gpt4 book ai didi

javascript - 将人类可读的数字范围转换为正则表达式

转载 作者:行者123 更新时间:2023-11-29 17:16:08 24 4
gpt4 key购买 nike

我有一个使用数据表显示的表格,在每一列上方我都有一个空的文本表单字段,用户可以在其中输入过滤条件。这适用于所有文本字段,也适用于整数字段。我正在对某些术语进行一些转换,例如如果用户输入 NULL 或 NOT NULL,例如我将其转换为正则表达式 ^$ 或 .

我知道正则表达式旨在搜索文本字符串,但这是数据表使用的,所以这就是我这样做的原因。我想要的是让用户能够输入一个值,例如“x 到 y”,并将其转换为正则表达式。我找不到执行此操作的功能,如果有人知道请告诉我。

假设函数不存在,假设只搜索正整数,最多 7 位。所以可以搜索 0 - 9,999,999。此外,触发此事件的唯一方法是使用带有空格“to”的关键字 to。

所以像这样开始:

function convertNumRangeRegex(s){

if(s.indexOf(" to ") != -1){
var range = s.split(" to ");
lowRange = Number(range[0]);
highRange = Number(range[1]);

if(lowRange >= 0 && lowRange < 10 && highRange < 10){
s = "^[" + lowRange + "-" + highRange + "]$";
}};


return s;
};

这适用于数字 0-9,但扩展它似乎会变得非常难看。我愿意接受任何想法。谢谢。

最佳答案

使用正则表达式验证数字是否在数字范围内是一个棘手的问题。这些正则表达式将匹配给定范围内的数字:

\b[0-9]{1,7}\b        #   0-9999999
\b[1-9][0-9]{2,6}\b # 100-9999999
\b([4-9][0-9]{4}|[1-9][0-9]{5,6})\b # 40000-9999999

当你有复杂的范围时,它开始失控

\b(?:5(?:4(?:3(?:2[1-9]|[3-9][0-9])|[4-9][0- 9]{2})|[5-9][0-9]{3})|[6-9][0-9]{4}|[1-9][0-9]{5}| [1-8][0-9]{6}|9(?:[0-7][0-9]{5}|8(?:[0-6][0-9]{4}| 7(?:[0-5][0-9]{3}|6(?:[0-4][0-9]{2}|5(?:[0-3][0-9] |4[0-3]))))))\b # 54321-9876543

enter image description here

关于javascript - 将人类可读的数字范围转换为正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com