我正在使用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
}