正则表达式以特定顺序匹配一组字符中的至少一个

Regex match at least one from set of characters in specific order

我有一个包含天子字符串的字符串。此子字符串包含表示每个适用的工作日的单个字符,并且可以包含工作日的任意组合,或者在没有工作日的情况下包含字母 N。每个工作日都由第一个字符表示,除了星期四是一个R,并且工作日必须按顺序。

我试图构建一个正则表达式来匹配这个子字符串,但我编写的正则表达式匹配空白字符串。

我的正则表达式是:^ABC ((M?T?W?R?F?)|N) ABC$

我希望这个匹配:

等...

但不匹配:

正则表达式这样做,但也匹配:

有人有快速修复方法吗?

编辑:我忘了提及,由于主机环境的限制,我只能使用 Microsoft VBScript Regular Expressions 5.5 库及其子集。

您可以使用前瞻性正则表达式:

^ABC (?=\S)(M?T?W?R?F?|N) ABC$
  • (?=\S) 是为了确保下一个字符不是 space.

RegEx Demo

这也可以实现为:

^ABC (M?T?W?R?F?|N)(?<=\S) ABC$