Regex 匹配特定模式或任何其他内容的条件正则表达式

Regex 匹配特定模式或任何其他内容的条件正则表达式,regex,regex-negation,regex-lookarounds,regex-group,Regex,Regex Negation,Regex Lookarounds,Regex Group,我一直想弄清楚这件事。 我需要一个正则表达式来检查用户输入文本字段中的以下内容: 只要有一个6位数字123456,而不是123456,$1234.56,那么它的前面只能是LEG upper case。如果不在LEG之前,则输入无效 如果没有与上述内容匹配的内容,则它是有效的 测试用例: Invalid: "LEG181234 & 123678 & LEG" Invalid: "hello 012345 world" Valid: "hello LEG012345 world" V

我一直想弄清楚这件事。 我需要一个正则表达式来检查用户输入文本字段中的以下内容:

只要有一个6位数字123456,而不是123456,$1234.56,那么它的前面只能是LEG upper case。如果不在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个数字,它会向后看是否有腿。但从那以后,我就被卡住了,因为我不知道除了6位数之外,我还能说什么


希望得到任何帮助

您可以测试您的输入,看看它是否无效,如下所示:

(?<!LEG)\d{6}
这些允许吗?如果没有,则可以使用\b并再添加两个检查:

(?<!LEG)\d{6}|\BLEG\d{6}|LEG\d{6}\B

因此,除了第一个?之外,现在还有第二个\BLEG\d{6}查找接受格式之前的无效字符,第三个\BLEG\d{6}\B与末尾存在的无效字符相匹配。

这必须在一个regexp中完成吗?如果你愿意的话,那就容易多了||
(?<!LEG)\d{6}|\BLEG\d{6}|LEG\d{6}\B