固定长度字符串的Regex,以数字0开头



我正在使用Bootstrap验证器,并尝试使用regex验证固定长度的字符串。

该字符串的固定长度恰好为7个字母数字字符,并使用AAA B-C格式,其中。。。

  • AAA是介于001-185和前导0之间的三位数范围
  • 然后是space
  • B是只接受A-F的字符
  • 然后是-
  • C是只接受1-4的一位数

例如,以下是正确的匹配:

001 A-1
056 F-3
138 B-1

请帮我找到合适的正则表达式,提前谢谢!

您可以使用交替运算符(|(来完成此操作。它基本上是正则表达式中的OR运算符。这有点笨拙,但下面是您的案例的正则表达式:

^(0[0-9][0-9]|1[0-7][0-9]|18[0-5]) [A-F]-[1-4]$

说明:

^:Regex 的启动

(:捕获组启动

0[0-9][0-9]:零后跟任意两个数字的文字匹配

|:可选(匹配左侧正则表达式或右侧正则表达式(

1[0-7][0-9]:1的字面匹配,后面是0-7,位于十位,后面是任意数字。我们需要将100-179和180-185分开,因为180及以上的单位不能大于5。

|:可选(匹配左侧正则表达式或右侧正则表达式(

18[0-5]:18的字面匹配,后面跟单位中的任何数字。

):捕获组端

[A-F]-[1-4]:空格后跟A到F中的任意字符,后跟-后跟1到4中的任意数字。(注意前面有空位(

$:确保匹配在字符串的末尾。

你可以在一些网站上查看你的正则表达式,例如,https://regex101.com/.

另一种选择是执行两次regex。从用户Rosco获得一个更简单的正则表达式来过滤一些输入:

if(^[0-1][0-9][0-9] [A-F]-[1-4]$ matches in input){
// check if anything is above 185
// we already know that input is off form [0-1][0-9][0-9] [A-F]-[1-4]
// thus we only need to check the second and third character when the first is 1
if(^18[6-9]....$ matches in input or ^19[0-9]....$ matches in input)
//input doesn't match your required regex
}

相关内容

  • 没有找到相关文章

最新更新