使用RegEx创建输入掩码

时间:2017-10-03 14:40:20

标签: regex

我正在尝试使用RegEx创建输入掩码。第一个字母可以是A或B,它必须是数字后的5位数,但范围是1-99999。 例如,

A00001

B20000

B00412

这是我到目前为止所拥有的,

^[S|T]{1}[0-9]{4}[1-9]

但它不允许使用A52210。

提前致谢:)

1 个答案:

答案 0 :(得分:0)

我不确定[S|T]应该做什么,但这是S|T之一 - S|或{{}之一1}}。此外,T无关紧要,您的号码不会适用于您期望的范围({1}[0-9]{4}[1-9]00001,但不是任何数字后跟零,即99999)。

代码

See regex in use here

11110

注意:如果要在长字符串上使用此正则表达式,并且字符串的内容可能包含您要搜索的字符串,则应替换两个位置断言{{1根据以下正则表达式,{}和^[AB](?!0{5})\d{5}$ 带有单词边界^

$

变体形式

版本略短,但依赖于字符串的结尾(如果字符串位于句子中间,则不会工作)

\b

负面的背后(在一些正则表达式中不会起作用)

\b[AB](?!0{5})\d{5}\b

长期滋扰正则表达式检查每种可能性,但确保至少有一个数字不是^[AB](?!0+$)\d{5}$

^ AB $

结果

输入

^[AB]\d{5}(?<!0{5})$

输出

注意:以下是匹配项;来自0以上的任何内容都不匹配。

A00001
B20000
B00412
A52210
A00001

A00000
S00001
A1000

说明

  • Input在行首处断言位置
  • A00001 B20000 B00412 A52210 A00001 匹配集合中的字符(字面意思为^[AB]
  • A确保以下内容不是B五次
  • (?!0{5})匹配任意数字五次
  • 0断言行尾的位置