正则表达式只允许1到12之间的数字

时间:2015-09-07 10:02:57

标签: regex regex-lookarounds

正则表达式只允许1到12之间的数字

我正在尝试(12)|[1-9]\d?但它不起作用,请帮助我,因为我是正则表达式的新手

5 个答案:

答案 0 :(得分:11)

这样的东西
^([1-9]|1[012])$
  • ^在字符串
  • 的开头处锚定正则表达式
  • [1-9]19

    匹配
  • |轮替,匹配上一场比赛或下一场比赛。

  • 1[012]匹配101112
  • $将正则表达式锚定在字符串的末尾。

Regex Demo

答案 1 :(得分:4)

尝试这样的事情:

^(1[0-2]|[1-9])$
  

1 [0-2]:第一个字符必须为1,第二个字符可以在范围内    从0到2

     

[1-9]:1-9的数字

     

^:字符串的开头

     

$:字符串结尾

Demo

答案 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]\