我目前正在使用([1-9]|1[0-2])
来表示1到12之间的输入。(不允许前导零。)
然而,似乎相当 hacky ,并且在某些日子看起来彻底肮脏。
☞是否有正确的内置方式?
☞有哪些其他方式来表示数字范围?
答案 0 :(得分:8)
是的,正确的:
[1-9]|1[0-2]
否则你不会得到10。
答案 1 :(得分:6)
您可以使用:
[1-9]|1[012]
答案 2 :(得分:6)
我倾向于使用像[2-9]|1[0-2]?
这样的形式来避免回溯,尽管这里没什么区别。虽然正则表达式可以很好地处理它们,但我已经受到XML Schema的限制,以避免出现这种“歧义”。
答案 3 :(得分:2)
您可以尝试以下方法:
^[1-9]$|^[1][0-2]$
答案 4 :(得分:1)
这是更好的答案,精确匹配范围为1-12。
(^0?[1-9]$)|(^1[0-2]$)
以前的答案在HTML输入正则表达式验证中并不能很好地工作,在某些情况下,如“ 1111”或“ 1212”之类的值仍会将其视为有效输入。
答案 5 :(得分:1)
使用以下模式 (0?[1-9]|1[0-2])
使用它会返回从 1 到 12(一月到十二月)的值,即使它最初以 0 开头(01, 02, 03, ..., 09, 10, 11, 12)
答案 6 :(得分:0)
怎么样:
^[1-9]|10|11|12$
匹配0-9或10或11或12。就这样,没有其他匹配项。
答案 7 :(得分:0)
验证数字1到12的正确方法如下:
(^[1-9][0-2]$)|(^[1-9]$)
例如,当您具有类型编号的输入并且需要验证月份时,上述表达式很有用。这是因为输入类型数字会忽略任何数字前面的0,例如:01返回1。
您可以在此处查看它的运行情况:https://regexr.com/5hk0s
如果您需要验证字符串数字,我的意思是,当您使用文本类型的输入但您希望输入数字时,例如:到期卡月份或月份,以下表达式可能对您有用:
((^0[1-9]$)|(^1[0-2]$))
您可以在此处https://regexr.com/5hkae
看到它的运行情况我希望这会有所帮助,因为它非常棘手。
致谢。
答案 8 :(得分:-1)
在 python 中,该值与 1-12 之间的任何数字匹配:
12|11|10|9|8|7|6|5|4|3|2|1
降序重要。按照升序 10 , 11 和 12 会匹配 1 ,因为正则表达式通常会选择第一个匹配项值。