【问题标题】:Different Regex behavior in different method of javascript [duplicate]不同的javascript方法中的不同正则表达式行为[重复]
【发布时间】:2021-08-31 20:57:57
【问题描述】:

我想将我的字符串(str)转换为脊柱字符串。请向我解释正则表达式的工作方式有何不同。上面一行代码工作正常,但另一行代码多次输入“-”。

str.split(/\s|(?=[A-Z])|_/g).join("-").toLowerCase();
// or
str.replace(/\s|(?=[A-Z])|_/g,"-").toLowerCase();

【问题讨论】:

  • 您应该包含您尝试更改的原始字符串;其他人怎么知道你想做什么?

标签: javascript regex methods replace split


【解决方案1】:

代码正在搜索任何空白区域并将其替换为破折号。 (这是由于您的代码中的\s)。因此,例如,如果它一个接一个地找到 3 个空格,那么它将用 3 个破折号替换它们。

您可以通过告诉它搜索包含一个或多个空格的任何组来纠正此问题,如下例所示:

str.split(/\s{1,}|(?=[A-Z])|_/g).join("-").toLowerCase();

此外,只需查找任何非字母数字字符即可大大简化代码。

str.split(/\W{1,}/g).join("-").toLowerCase();

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    相关资源
    最近更新 更多