代码之家  ›  专栏  ›  技术社区  ›  JAN

支持域中有多个正斜杠的正则表达式

  •  -1
  • JAN  · 技术社区  · 4 年前

    我需要支持端点,比如

    /myendpoint:
    /v1/myendpoint:
    /v3/someotherendpoint:
    

    这个正则表达式:

    const regexPattern = '/[a-zA-Z0-9-]+:';
    

    唯一的答案 /myendpoint:

    我们如何进行or操作来支持这两种情况?

    2 回复  |  直到 4 年前
        1
  •  2
  •   samanime    4 年前

    如果你只需要测试它是否匹配,你可以使用一个重复的模式,如下所示:

    const tests = ['/a', '/a/b/c', 'nope'];
    const pattern = /^(\/[0-9a-z-]+)+$/i;
    
    tests.forEach(str => console.log(str, pattern.test(str)));

    如果你想匹配每一个部分,它会变得更加棘手和丑陋,你最好测试一下它是否有效,然后使用它 split('/') 去拿零件。

        2
  •  1
  •   Shri Hari L    4 年前

    只需将其设置为类似于递归的方式,以便为其多个实例提供现有的解决方案。

    例子: (\/[a-zA-Z0-9-]+)*:

    播放: https://regexr.com/6jka3

    角色 * 在正则表达式中表示“ 零次或多次匹配前面的字符 "