javascript中的正则表达式检查范围中的值

javascript中的正则表达式检查范围中的值,javascript,regex,Javascript,Regex,检查值的正则表达式应该是(1000到20000)^(20000|[1]{0,1}[\d]{4})$ ^和$确保整个输入字符串作为一个整体进行测试。否则,我们可能会在部分匹配中出现假阳性,比如6200007为真 (xxx | yyy)表示“匹配xxx或yyy”。这是必要的,因为很容易说“匹配4个数字”,基本上是1000-9999。也很容易说有或没有首发1。但由于最大值为20000,我无法用正则表达式来表示“起始1或2”,因为起始“2”必须禁止除0以外的任何后续数字 因此,字符串必须完全匹配2000

检查值的正则表达式应该是(1000到20000)

^(20000|[1]{0,1}[\d]{4})$

^和$确保整个输入字符串作为一个整体进行测试。否则,我们可能会在部分匹配中出现假阳性,比如6200007为真

(xxx | yyy)表示“匹配xxx或yyy”。这是必要的,因为很容易说“匹配4个数字”,基本上是1000-9999。也很容易说有或没有首发1。但由于最大值为20000,我无法用正则表达式来表示“起始1或2”,因为起始“2”必须禁止除0以外的任何后续数字

因此,字符串必须完全匹配20000,或任何4个数字加上可能的1作为前缀

要测试:


/^(20000 |[1]{0,1}[\d]{4})$/.test('20000')

Regex是错误的工具。举个例子,假设我们要检查50到100范围内的值。使用正则表达式,您不能用数字来思考,相反,您必须思考哪些字符串是该范围的有效表示形式

因此,从我们注意到的字符串的角度考虑,第一个数字必须是
5
6
7
8
9
,除非我们是3个数字,应该是
1

让我们简化一下,将字符串
100
视为一个特例,它为我们提供了一个regexp:

100|[5-9][0-9]

现在,让我们来看另一个例子。假设您想要1000到9999之间的数字。我们遵循上述思路,这将使我们:

[1-9][0-9][0-9][0-9]
可简化为:

[1-9]\d{3}

你可以把范围10000到20000作为特殊情况,写一个正则表达式,然后用<代码> < < /C> >运算符将它与上面的正则表达式结合起来。< /P> 我将把实际的解决办法留给你去解决

不过,regex在这方面是错误的工具。这样做容易得多:

x >= 1000 && x <= 20000

x>=1000&&x请查找以下代码:

function numInRange(numberStr) { 
  var res = numberStr.search(/(^[1-9][0-9]{3}$)|(^[1][0-9]{4}$)|(^[2][0]{4})/);
  return res == 0;
}

numInRange("999");
numInRange("1000");
numInRange("2000");
numInRange("9999");
numInRange("10000");
numInRange("20000");
numInRange("20001");

正则表达式过量。不要事事都使用正则表达式。上帝已经给了我们。当问问题表明你的努力时,不要期望仅仅通过倾销需求来获得代码。
var re,j,a=[];对于(j=1000;j