条件正则表达式以匹配特定模式或其他任何内容
Conditional Regular Expression to match a specific pattern or anything else
我无法解决这个问题。
我需要一个正则表达式来检查用户输入(文本字段)的以下内容:
- 只要有 6 位数字(
123456
而不是 123,456
、34.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
。但是从那里我被困住了,因为我不确定我怎么能说 "match anything else except 6 digits"。
希望得到任何帮助!
您可以像这样测试您的输入是否无效:
(?<!LEG)\d{6}
只要有匹配项,就意味着有 6 个数字前面没有 LEG
。因此,根据您的测试用例,前两个将 return 匹配。
现在,您没有提供任何其他案例,但我想知道是否还有更多。例如:
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
匹配存在末尾的无效字符数。
我无法解决这个问题。 我需要一个正则表达式来检查用户输入(文本字段)的以下内容:
- 只要有 6 位数字(
123456
而不是123,456
、34.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
。但是从那里我被困住了,因为我不确定我怎么能说 "match anything else except 6 digits"。
希望得到任何帮助!
您可以像这样测试您的输入是否无效:
(?<!LEG)\d{6}
只要有匹配项,就意味着有 6 个数字前面没有 LEG
。因此,根据您的测试用例,前两个将 return 匹配。
现在,您没有提供任何其他案例,但我想知道是否还有更多。例如:
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
匹配存在末尾的无效字符数。