我的正则表达式接受1到100之间的数字。但它接受特殊字符'%'
这是我正在使用的正则表达式
^(0*100{1,1}\\.?((?<=\\.)0*)?%?$)|(^0*\\d{0,2}\\.?((?<=\\.)\\d*)?%?)$'
我不想接受% 任何人都可以帮我解决这个问题。
答案 0 :(得分:6)
Ali Shah Ahmed建议的正则表达式不适用于1位数字,这个数字的确如下:
(100)|(0*\d{1,2})
已编辑:如果您不想接受值0,则可以使用此正则表达式:
(100)|[1-9]\d?
答案 1 :(得分:1)
删除所有%?
。这表示正则表达式应匹配零个或一个%
个字符。
答案 2 :(得分:1)
我会采取多步骤的方法。不会尝试单独使用正则表达式来解决这个问题。维护是一场噩梦。
我的解决方案: -
使用简单的正则表达式来确定该值是否为具有三位或更少位数的整数。
/^\d{1,3}$/
如果有效,请转换为数字。
检查该号码是<= 100
和>= 0
。
答案 3 :(得分:1)
我相信这个正则表达式也会起作用,并且比你提到的那个更简单。
(100)|(0*\d{1,2})
这也将处理前导零。
答案 4 :(得分:1)
仅匹配1到100(包括1和100):
\b
/((100)|[1-9]\d?)/.test("I have 1000 dollars");
匹配字边界。这意味着类似于JavaScript:
true
将返回false
。相反,使用单词边界将返回<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<sources>
${basedir}/src/main/webapp/js
</sources>
</configuration>
<executions>
<execution>
<goals>
<goal>add-source</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.7</version>
<configuration>
<language>javascript</language>
<rulesets>
<ruleset>ecmascript-basic</ruleset>
<ruleset>ecmascript-braces</ruleset>
<ruleset>ecmascript-unnecessary</ruleset>
</rulesets>
<includes>
<include>**/*.js</include>
</includes>
</configuration>
</plugin>
</plugins>
</reporting>
。
答案 5 :(得分:0)
这允许从1到100的数字:
100|[1-9]?\d
答案 6 :(得分:0)
^(100 | [1-9] [0-9]?)$ 此正则表达式的匹配范围是1到100, 100与100完全匹配或 [1-9]匹配1到9范围内的字符 [0-9]匹配0到9范围内的字符 ?在前面的令牌的0和1之间进行匹配
供您参考,请在https://regexr.com/
处验证正则表达式组合答案 7 :(得分:0)
如果您的匹配项包含小数点且前导零,则我认为这是最佳选择
^(?:[0-9]|[1-9][0-9](\.\d{1,2})?|100|10.00)$
22 # returns True
100 # returns True
22.35 # returns True
20.23 # returns True
100.1 # returns false out bound/range
02 # returns False leading zero
69.235 # returns False exceeds 2 decimal places
001 # returns False has 2 leading zeroes
将小数位数限制为两位小数,检查测试组合 https://regex101.com/r/Tpe9Ia/10 1