В вашем шаблоне последняя труба |
чередования должна быть закрывающей скобкой, чтобы закрыть группу, и вы не учитываете запятую или пробел.
\b(monday|tuesday|wednesday|thursday|friday|saturday|sunday|\b
^
Если вы нессылаясь на группы захвата в вашем коде или инструменте, вы можете сделать их не захватывающими, используя (?:
вместо (
. Вы можете обновить свой шаблон, чтобы использовать привязки ^
и $
, чтобы утверждатьначало и конец строки.Затем сопоставьте 1 день и повторите 0+ раз, сопоставляя другой день, предшествующий запятой или пробелу.
^(?:mon|tues|wednes|thurs|fri|satur|sun)day(?:[, ](?:mon|tues|wednes|thurs|fri|satur|sun)day)*$
Regex demo
Если вы хотите разрешить толькоуказанные форматы и, например, не monday tuesday,saturday
, используя пробел И запятую, вы можете захватить пробел или запятую в первый раз, а затем использовать обратную ссылку, используя \1
:
^(?:mon|tues|wednes|thurs|fri|satur|sun)day(?:([, ])(?:mon|tues|wednes|thurs|fri|satur|sun)day)?(?:\1(?:mon|tues|wednes|thurs|fri|satur|sun)day)*$
Regexдемо