【问题标题】:javascript regex function [closed]javascript正则表达式函数[关闭]
【发布时间】:2014-06-01 15:51:24
【问题描述】:

我需要编写 JS 正则表达式(或函数)来告诉我字符串是否采用该格式:

/root/:param1/:param2/:param3/.../

/root/:param1/:param2/:param3/... (without last slash)

有什么想法吗? 谢谢。

【问题讨论】:

  • 你有什么自己的想法吗?
  • 请提供更多信息。目前还不清楚您的问题是什么。
  • 提示:你本身不需要正则表达式

标签: javascript regex


【解决方案1】:

如果我对您的问题的解释正确,看起来我们可以将此模式分解为三个主要组成部分:

  1. /root开头
  2. 后跟一些/:param
  3. 可选地后跟/

现在我们只需要为每个组件开发正则表达式并将它们组合起来:

  1. /root开头
    • 字符串的开头标记为^,然后是/root
    • ^/root
  2. 后跟一些/:param
    • 假设:param 应该匹配不是正斜杠[^/] 的1-N 个字符(+ 运算符)
    • 这给了我们/[^/]+
    • 整个单元的0-N可以使用组和*运算符进行匹配:(/[^/]+)*
  3. 可选地后跟/
    • 使用? 运算符:/?
    • 附加 $ 以指定字符串的结尾

我们得到了正则表达式^/root(/[^/]+)*/?$。您可以使用RegExp.prototype.test 来检查匹配项:

r = new RegExp('^/root(/[^/]+)*/?$')
r.test('/root')                         // => true
r.test('/root/')                        // => true
r.test('/root/apple/banana')            // => true
r.test('/root/zebra/monkey/golf-cart/') // => true

如果您要匹配 URL 路径段 you'll need to use a more specific character set 而不是我在此处用于 :param 字符的 [^/]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多