简体   繁体   English

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

[英]Regex matching a very specific Pattern

I have been trying to create a regex that would accept any of the values (SPAM, FOO, BAR) separated by a | 我一直在尝试创建一个正则表达式,以接受由|分隔的任何值(SPAM,FOO,BAR)。 or NONE. 或无。 The regex I've been working on does the job, but a problem comes up when a value is entered before those values (See image below for more details). 我一直在使用的正则表达式可以完成这项工作,但是当在这些值之前输入一个值时就会出现问题(有关更多详细信息,请参见下图)。 Any suggestions? 有什么建议么? Thank you! 谢谢!

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

This is what I am currently working with. 这就是我目前正在使用的。

Strings that should pass: 应该传递的字符串:

//Should Pass //应该通过

FOO|BAR|SPAM FOO | BAR |垃圾邮件

FOO OO

SPAM|BAR 垃圾邮件|

SPAM|FOO 垃圾邮件| FOO

SPAM|FOO|BAR 垃圾邮件| FOO | BAR

BAR|FOO 酒吧|脚

NONE 没有

//Should fail //应该失败

NONE|FOO NONE | FOO

FOO|SPAM|NONE FOO |垃圾邮件|无

FOO|NONE|BAR ​ FOO|TEST FOO | None | BAR FOO | TEST

FOO_TEST FOO_TEST

FOO TEST 脚步测试

FOO|TEST|BAR FOO | TEST | BAR

FOO_TEST|BAR FOO_TEST | BAR

​ TEST|FOO 测试| FOO

TEST|FOO|BAR TEST | FOO | BAR

TEST FOO|BAR 测试FOO | BAR

TEST_FOO|BAR TEST_FOO | BAR

​ *TEST is being used as a word that is not in the group * TEST被用作不在组中的单词

在此处输入图片说明

这应该起作用: ^NONE$|^(FOO|BAR|SPAM)([|](FOO|BAR|SPAM))*$

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM