代码之家  ›  专栏  ›  技术社区  ›  akash prasad

regex-匹配字符,但不匹配正斜杠

  •  0
  • akash prasad  · 技术社区  · 6 年前

    我实际上在找雷吉克斯。基本上我想匹配下面的URL

    /test/*/contact/*
    

    我的输入是这样的

    /test/1234/contact/abcd  ----   This is correct
    /test/abcd/1234/contact/abcd --- This should show not match
    

    我试过雷吉克斯

    \/test\/\S+\/contact\/\S+
    

    通过使用上面的exp,它显示两个都是正确的。有人能帮我排除斜杠吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Wiktor Stribiżew    6 年前

    这个 \S 模式匹配 / . 你应该依靠 [^\/] 否定字符类并使用锚:

    ^\/test\/[^\/]+\/contact\/[^\/]+$
    

    regex demo

    细节

    • ^ -字符串开头
    • \/test\/ - /test/
    • [^\/]+ -1个字符以上 /
    • \/contact\/ - /contact/
    • [^·/] + -1个字符以上 /
    • $ -字符串结尾。
        2
  •  0
  •   dquijada    6 年前

    \S 意思是“任何不是 \s “。

    的S 表示“空白”。等于:[\r\n\t\f\v]

    • R -回车
    • \n 换行符
    • t -制表符
    • f -表单提要字符(类似于“下一页”)。
    • V -垂直空间
    • -简单空白

    正因为如此, 的S 包含+ / . 为了达到你想要的效果,你可以做“除了空格或斜杠以外的任何事情”(即: [^\/\s]* )或者指定您接受的字符(例如,字母数字和-\ [a-zA-Z0-9_-]* )

    如果您有任何问题,请随时提出,我会进一步解释