我一直试图解决这个问题。 我需要一个正则表达式来检查以下内容的用户输入(文本字段):
123456
而非123,456
,$1234.56
),就必须在LEG
之前(仅限大写) )。如果不在LEG
之前,则输入无效测试用例:
Invalid: "LEG181234 & 123678 & LEG"
Invalid: "hello 012345 world"
Valid: "hello LEG012345 world"
Valid: "LEG123456"
Valid: "Not Legged"
Valid: "01234"
所以我管理了这个表达式:
(?<=[LEG])([0-9]{6})
如果找到6位数,那么会查看是否有LEG
。但是从那里开始我就被卡住了,因为我不确定我怎么说'#34;匹配除了6位数以外的任何其他东西&#34;。
会喜欢任何帮助!
答案 0 :(得分:2)
您可以测试您的输入,看看它是否有效:
(?<!LEG)\d{6}
每当匹配时,这意味着有6个连续数字前面没有LEG
。因此,从您的测试用例中,前两个将返回匹配。
现在,你没有提供任何其他案件,但我想知道是否还会有更多案件。例如:
BOOTLEG123456
LEG123456ABC
这些是允许的吗?如果没有,那么您可以使用word boundary anchor \b
并再添加两项检查:
(?<!LEG)\d{6}|\BLEG\d{6}|LEG\d{6}\B
因此,与第一个(?<!LEG)\d{6}
一起,现在您有第二个\BLEG\d{6}
,它会在您接受的格式之前查找无效字符,第三个LEG\d{6}\B
匹配无效字符的存在最后的人物。