简化 JavaScript 正则表达式

Simplify JavaScript regexp

本文关键字:正则表达式 JavaScript 简化      更新时间:2023-09-26

如何简化我的正则表达式(^('w+)'/('w+)'/('d+)$|^('w+)'/('w+)'/$|^('w+)'/('w+)$)以匹配controller/action(/id)等示例?我目前的正则表达式看起来又长又复杂:(

匹配示例:

controller/action
controller/action/
controller/action/123

不匹配:

controller/
controller/action/action
controller/action/123/
controller/action/123/456

您可以使用以下具有可选组的正则表达式:

^('w+)'/('w+)(?:'/('d+)?)?$
             ^^^       ^ ^

查看正则表达式演示

此正则表达式匹配:

  • ^ - 字符串的开头
  • ('w+) - 一个或多个字母数字或下划线字符
  • '/ - /符号
  • ('w+) - 一个或多个字母数字或下划线字符
  • (?:'/('d+)?)? - 可选(一次或零
  • 次出现(序列(由于(?:...)?构造,非捕获组(?:...) + ? - 一个或零 - 量词(匹配
    • '/ - 正斜杠
    • ('d+)? - 可选的捕获组匹配一个或多个数字(但此组可能丢失,因为?量词应用于整个组(...) (
  • $ - 字符串锚点的结尾。