Regex -只接受1到100之间的数字(不应该接受任何其他数字)

wvyml7n5  于 2023-03-31  发布在  其他
关注(0)|答案(8)|浏览(163)

我有一个接受1到100之间数字的正则表达式,但是它接受特殊字符'%'
这是我正在使用的正则表达式

^(0*100{1,1}\\.?((?<=\\.)0*)?%?$)|(^0*\\d{0,2}\\.?((?<=\\.)\\d*)?%?)$'

我不想接受%谁能帮我解决这个问题。

9lowa7mx

9lowa7mx1#

Ali Shah Ahmed建议的正则表达式不适用于1位数,下面这个可以:

(100)|(0*\d{1,2})

如果你不想接受值0,你可以使用这个正则表达式:

(100)|[1-9]\d?
a2mppw5e

a2mppw5e2#

删除所有%?。这表明正则表达式应该匹配零个或一个%字符。

o75abkj4

o75abkj43#

我会采取一个多步骤的方法。不会尝试只用正则表达式来解决这个问题。维护是一场噩梦。
我的解决方案:-
使用一个简单的正则表达式来确定该值是否为三位数或更少位数的整数。

/^\d{1,3}$/

如果有效,转换为数字。
检查数字是否为<= 100>= 0

rekjcdws

rekjcdws4#

我相信这个正则表达式也可以工作,并且比你提到的那个简单一点。

(100)|(0*\d{1,2})

这也将处理前导零。

aemubtdh

aemubtdh5#

这仅匹配1到100(包括1和100):
/\b((100)|[1-9]\d?)\b/
\b匹配单词边界。这在JavaScript中的意思是:
/((100)|[1-9]\d?)/.test("I have 1000 dollars");
将返回true。相反,使用单词边界将返回false

j9per5c4

j9per5c46#

这允许从1到100的数字:

100|[1-9]?\d
iq0todco

iq0todco7#

**^(100|[1-9][0-9]?)$**此正则表达式在1到100之间匹配,100正好匹配100或[1-9]匹配1到9范围内的字符[0-9]匹配0到9范围内的字符?在前面标记的0和1之间匹配

并在此处验证正则表达式组合https://regexr.com/,以供参考

eqoofvh9

eqoofvh98#

别人说什么都好。
我给了一个完整的和更精确的代码为上述问题。希望它有帮助。

const onChange = (userInput) => {
    const regex = /^([1-9]|[1-9][0-9]|100)$/;
    if (userInput === "" || regex.test(userInput)) {
      console.log("valid number and in range of 1-100");
    } else {
      console.log("not a number and in range of 1-100");
    }
  };

相关问题