确保字符串只包含某些带有正则表达式的单词

gsi*_*011 1 java regex

我想使用 Java 中的正则表达式来验证字符串的格式是否正确。如果字符串包含的唯一单词来自指定列表,则该字符串的格式正确。一个单词可以包含大写和小写字母。字符串可以包含数字和符号。

例如,如果我的接受词列表是[foo, bar],那么字符串

foo bar! bar foo.
Run Code Online (Sandbox Code Playgroud)

已验证。请注意,字符串不必包含 lsit 中的每个单词。因此字符串foo是有效的,字符串bar也是有效的。

像一个字符串

foo bar baz!
Run Code Online (Sandbox Code Playgroud)

是无效的。

pon*_*cha 5

尝试这个:

/^(foo|bar|[[:space:][:punct:]])+$/
Run Code Online (Sandbox Code Playgroud)