2016-02-12 72 views
0

首先,找出所有的任何两个数值(范围)之间的数字,我知道正则表达式是不是最好的工具来实现我想在这里。我已经做了足够的研究来了解这一点。但是,我陷入困境的问题需要我编写一个正则表达式来查找一些下限值和上限值之间的值。正则表达式在JavaScript

因此,这里的问题,我有一个大的数据集,比方说在1至1000000之间的数据是不是我的直接控制下,我不能直接操作数据。只有从数据中找出(搜索)一些值的方法是正则表达式。现在,用户可以给出两个值,一个最小值和一个最大值,我需要基于这两个值构造一个正则表达式,然后查询大数据集使用正则表达式来获取所有值在设定范围之间。因此,如果我的数据包含[1,5,7,9,15,30,45,87],并且用户将范围设置为min:10,max:40。正则表达式应该过滤掉值15,30.

从我搜索的任何东西,我知道它是非常有可能建立一个正则表达式找出固定值之间的值(如果我们事先知道它们),例如,值1至100可以通过发现:

^(100 | [1-9] [0-9]?)$

但是变得如此棘手的关于我的问题是输入范围可以是任何东西非常多的1位数值可以达到10位数值。 10000-550000可以是大数据集的示例用户输入。

我知道这将需要一些复杂的逻辑和循环所涉及的基础上的下限数字位数和范围的上限位数,然后一些递归或其他神奇的逻辑来建立一个正则表达式涵盖了该范围内的所有数字。

我已经填补了网页拿出一个逻辑,但恐怕超过我正则表达式的知识。如果任何人以前曾经做过这样的事情,或者试图指向正确的方向或尝试自己 - 这会非常有帮助。谢谢。

我会用这语言是JavaScript和我读的地方,JS不支持有条件的正则表达式,牢记这一点,解决方案并不一定要在特定的语言。

+0

ü可以做一组范围。 [(15)(30)]不知道这是否工作... – wbg

+0

你可以迭代槽中的所有元素? – Oleander

+0

使用手机和错别字和意外的帖子..现在编辑。 – wbg

回答

-1

如果你的任务是从数据集中获得的最小和最大值之间的数字,你可以试试滤波方法。

Var filteredResults = Dataset.filter(function(item){ 
     If(item < max && item > min) 
      Return item 
} 
) 
+0

阅读整个问题。 -1 – Oleander

+0

不幸的是,查询数据的唯一途径是通过正则表达式.. –

+0

能不能请你删除你的答案? – Oleander