You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:仅接受逗号/空格分隔星期列表的正则表达式编写问题

解决星期几列表的正则验证问题

Hey there! Let's fix that regex issue you're having for validating weekday lists. First, let's break down what's wrong with your current regex:

原正则的问题

Your regex "\b(monday|tuesday|wednesday|thursday|friday|saturday|sunday|\b" has a couple of critical issues:

  • 语法错误: 你有一个未闭合的括号,末尾还多了个 |\b,直接导致整个正则无法被解析。
  • 未限制全字符串匹配: 没有使用 ^(字符串开头)和 $(字符串结尾)锚点,会导致正则匹配输入中的任意子串——哪怕输入里混了其他无效内容也能通过。
  • 未处理分隔符逻辑: 没有考虑到多个星期几之间的空格或逗号分隔规则。

修正后的正则表达式

这里有一个能正确验证输入的正则,它支持空格、逗号,甚至逗号加空格(比如 monday, tuesday)作为分隔符:

^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)(?:(?:,|\s)+(monday|tuesday|wednesday|thursday|friday|saturday|sunday))*$

逐部分解释

咱们拆解下每个部分的作用:

  • ^: 锚定到输入字符串的开头——确保第一个星期几之前没有无效内容。
  • (monday|tuesday|wednesday|thursday|friday|saturday|sunday): 匹配第一个合法的星期几(支持单个星期几的输入)。
  • (?:(?:,|\s)+(...))*: 一个非捕获组,用来处理重复的星期几:
    • (?:,|\s)+: 匹配一个或多个分隔符(逗号、空格,或者两者混合比如 , )。
    • 内部的星期几分组会再次匹配一个合法的星期几。
    • * 允许这个「分隔符+星期几」的模式重复0次或多次(所以单个星期几的输入也能通过)。
  • $: 锚定到输入字符串的结尾——确保最后一个星期几之后没有无效内容。

额外优化:不区分大小写

如果你想接受大写或混合大小写的输入(比如 Monday 或 TUESDAY),可以根据你的正则引擎添加不区分大小写修饰符(通常是末尾加 i):

/^(monday|tuesday|wednesday|thursday|friday|saturday|sunday)(?:(?:,|\s)+(monday|tuesday|wednesday|thursday|friday|saturday|sunday))*$/i

测试用例

匹配的有效输入:

  • monday tuesday saturday
  • monday,tuesday,saturday
  • monday, tuesday sunday
  • friday

不匹配的无效输入:

  • monday holiday(包含非星期几的词汇)
  • monday,tues(无效的星期几缩写)
  • 123 sunday(包含非文本字符)
  • 空字符串

可选:禁止重复星期几

如果你想阻止重复的星期几输入(比如 monday monday),正则会需要用到负向预查变得复杂一些,如果需要的话可以告诉我!

内容的提问来源于stack exchange,提问作者Ahmed Mhadhbi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:46:41