正则表达式匹配非常特定的模式

时间:2018-11-06 15:25:50

标签: regex

我一直在尝试创建一个正则表达式,该正则表达式将接受由|分隔的任何值(SPAM,FOO,BAR)。或无。 我一直在使用的正则表达式可以完成这项工作,但是当在这些值之前输入一个值时就会出现问题(有关更多详细信息,请参见下图)。 有什么建议么? 谢谢!

^ NONE $ | ^(?!。 NONE)(?:。(FOO | BAR | SPAM))*

这是我目前正在使用的。

应该通过的字符串:

//应该通过

FOO | BAR |垃圾邮件

FOO

SPAM | BAR

SPAM | FOO

SPAM | FOO | BAR

BAR | FOO

//应该失败

NONE | FOO

FOO |垃圾邮件|无

FOO | NONE | BAR FOO | TEST

FOO_TEST

FOO测试

FOO | TEST | BAR

FOO_TEST | BAR

TEST | FOO

TEST | FOO | BAR

TEST FOO | BAR

TEST_FOO | BAR

* TEST被用作不在该组中的单词

enter image description here

1 个答案:

答案 0 :(得分:2)

这应该有效:^NONE$|^(FOO|BAR|SPAM)([|](FOO|BAR|SPAM))*$