繁体   English   中英

正则表达式仅允许 1-31 个数字并禁用字母和符号

[英]Regex to allow only 1-31 numbers and disable letters & symbols

我将这个正则表达式用于 DayDate input=type[text]

^(0?[1-9]|[1@2][0-9]|3[01])$

我想禁用在我的情况下用户可以输入字母的选项。

我不能使用 input=type[number]

我发现\D只允许正则表达式中的数字,但不确定将它放在我上面提到的正则表达式中的哪个位置

^[1-9]$|^[1-2][0-9]$|^3[0-1]$

这将匹配:

  • 1-9之间的一位数;
  • 1 或 2 后跟 0-9 之间的任何值,以匹配 10 到 29;
  • 3 后跟 0 或 1,以捕获 30 和 31。

但是正则表达式并不真正适用于这类事情。 如果您有任何方法进行数值验证,请执行此操作。 只检查 $num > 0 和 <= 31 会更加简单和高效。

可以使用简写\d代替[0-9] 它只是一个略短的版本。

虽然简写\d可用于查找“数字”(从 0 到 9),但\D正好相反,表示所有“数字”。

使用\d您可以将您的正则表达式重写为^(0?[1-9]|[1@2]\d|3[01])$而不会影响结果。

资源: https://www.regular-expressions.info/shorthand.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM