启用“监视词正则表达式”设置时,无效的正则表达式会导致整个特定的监视词类别失效。
复现步骤
- 启用“监视词正则表达式”。
- 向“需要审批”添加一个监视词模式,例如
same issue。 - 添加一个无效的监视词模式,例如
*ban*(这通常是在启用正则表达式之前,监视词中包含通配符的情况)。 - 注意:包含“same issue”的帖子将跳过审批队列,并且也会被“测试”表单忽略。
- 移除无效的监视词。
- 注意:“same issue”现在将正确匹配。
复现步骤(更严重):
- 启用“监视词正则表达式”和标签。
- 向“标签”添加一个无效的监视词模式,例如
*tebex.io*→paid。 - 尝试发布新主题。这将返回“错误 500”,并在
/logs中显示以下结果:
RegexpError (target of repeat operator is not specified: /*tebex.io*/)
app/services/word_watcher.rb:116:in `initialize'
app/services/word_watcher.rb:116:in `new'
app/services/word_watcher.rb:116:in `matches?'
lib/topic_creator.rb:184:in `block in setup_tags'
lib/topic_creator.rb:183:in `each'
lib/topic_creator.rb:183:in `setup_tags'
lib/topic_creator.rb:46:in `create'
lib/post_creator.rb:501:in `create_topic'
附注
我认为,如果正则表达式被禁用,但仍允许输入有效的正则表达式(例如,用 / 包裹,类似于通配符),那会很好。特别是因为如果现有的任何监视词已经包含通配符,切换该选项会导致严重故障。