正则表达式只允许1到12之间的数字
我正在尝试(12)|[1-9]\d?
但它不起作用,请帮助我,因为我是正则表达式的新手
答案 0 :(得分:11)
像
这样的东西^([1-9]|1[012])$
^
在字符串 [1-9]
将1
与9
|
轮替,匹配上一场比赛或下一场比赛。
1[012]
匹配10
,11
或12
$
将正则表达式锚定在字符串的末尾。答案 1 :(得分:4)
答案 2 :(得分:3)
这里有一些现成的正则表达式,用于一堆不同的numbers within a certain range:
| Range | Label | Regex |
| --------- | ------------ | ------------------------------------ |
| 1 to 12 | hour / month | 1[0-2]|[1-9] |
| 1 to 24 | hour | 2[0-4]|1[0-9]|[1-9] |
| 1 to 31 | day of month | 3[01]|[12][0-9]|[1-9] |
| 1 to 53 | week of year | 5[0-3]|[1-4][0-9]|[1-9] |
| 0 to 59 | min / sec | [1-5]?[0-9] |
| 0 to 100 | percentage | 100|[1-9]?[0-9] |
| 0 to 127 | signed byte | 12[0-7]|1[01][0-9]|[1-9]?[0-9] |
| 32 to 126 | ASCII codes | 12[0-6]|1[01][0-9]|[4-9][0-9]|3[2-9] |
答案 3 :(得分:1)
[1-9] | 1 [012]适用于贪婪的量词(尝试尽可能多地匹配),但不适用于懒惰的量词10,因为只要看到1,它就会停止。 Try this at https://regex101.com/
[2-9] | 1 [012]将适用于惰性量词
答案 4 :(得分:-1)
我认为这应该有用
\[1-9]|1[0-2]\