如何修改正则表达式以允许斜杠并验证Slug?
修改Slug验证正则以支持斜杠路径
原正则仅能匹配单级Slug,要支持my-parent-page/my-child-page这类多级路径格式,只需将原有的单级Slug规则封装为可重复单元,允许通过/连接多个合法单元即可。
修改后的正则表达式
const rule = new RegExp('^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*(?:/[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*)*$');
规则拆解
[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*:保留原单级Slug的验证逻辑,匹配以字母数字开头、后续可跟任意个-字母数字组合的合法单段Slug;使用(?:...)非捕获组避免不必要的内存占用。(?:/[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*)*:允许在单段Slug后,追加任意个(包括0个)/加合法单段Slug的组合,以此支持多级路径。
验证示例
- 合法匹配:
my-page、my-parent-page/my-child-page、post-456/category/tech-news - 不合法匹配:
/leading-slash(开头含斜杠)、trailing-slash/(结尾含斜杠)、double--dash(连续连字符)、has space(包含空格)
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

