1

有人可以帮我创建一个 posix 正则表达式来检查输入的字符串是否遵循以下模式:

周一周二周三周四周五周六周日

或者

周一、周三、周五

或者

星期日

然后:

  1. 星期几后跟“,”
  2. 我无法重复一周中的某一天
  3. 字符串的最后一天不能有“,”
4

1 回答 1

0

如果天的顺序无关紧要,请使用:

^((Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)(, (?!$)(?!.*\2)|$))*$

在此处查看演示。

解释:

  • 内括号用于表示天数的析取。
  • ^匹配字符串的开头。
  • $匹配字符串的结尾。
  • (?!$)表示逗号不能跟在字符串的末尾。
  • (?!.*\2)表示后面没有任意数量的字符 ( .*) 和第二组 ( \2),即最里面的一组。

关于最后一点,我建议你谷歌关于正则表达式匹配组,lookarounds backreferences

于 2021-01-21T10:45:58.227 回答