【问题标题】:How to use RegExp grouping in javascript to parse strings如何在 javascript 中使用 RegExp 分组来解析字符串
【发布时间】:2022-11-04 21:52:38
【问题描述】:

我需要创建一个 RegExp,它允许我使用组来正确解析字符串以进行一些比较逻辑。

考虑以下字符串列表:

const testSet: string[] = [
    "alpha-4181a",
    "alpha-4181a-2",
    "alpha-4181a_3",
    "example",
    "smokeTest"
]

请注意-2_3,它们是此命名约定中的有效版本控制方法。我们希望保持对此类的支持。

如果我们遍历上面的集合,我期待整个字符串,如果它存在则没有版本控制(如下所示)......

const returnSet: string[] = [
"alpha-4181a",
"alpha-4181a",
"alpha-4181a",
"example",
"smokeTest"
]

到目前为止,我有以下正则表达式 /([-_]\d?)$/gi 它确实正确识别了字符串末尾的版本控制。从这里开始,我想创建一个额外的组来匹配不是版本控制约定的所有内容,但我似乎无法弄清楚......

【问题讨论】:

    标签: regex typescript


    【解决方案1】:

    您只需要在最后的版本控制之前匹配所有内容。但是您还需要惰性匹配,这就是+? - 更多信息请参见this question

    const testSet = [
        "alpha-4181a",
        "alpha-4181a-2",
        "alpha-4181a_3",
        "example",
        "smokeTest"
    ];
    
    const resultSet = testSet.map((x) => x.match(/^(.+?)(?:[_-]d)?$/)?.[1] ?? x);
    //                                                  ^^^^^^^^^^ versioning here
    //                                             ^^^^^ match everything before
    console.log(resultSet);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      相关资源
      最近更新 更多