JavaScript 正则表达式如何处理这个脊柱格句子

cre*_*tbd 0 javascript regex

我有以下 JavaScript 功能:

function spinalCase(str) {
  str = str.replace(/([a-z])([A-Z])/g, '$1 $2');
  console.log(str);
}

spinalCase('thisIsSpinalTapIp');
Run Code Online (Sandbox Code Playgroud)

现在它向我展示:

这是脊椎穿刺 Ip

我无法理解它如何识别space()以及为什么它在替换函数中使用2 个正则表达式。你能把它分解一下吗?

注意:该函数的目标是获取脊柱案例句子。

Ank*_*kit 5

让我们来分解一下:

([a-z])匹配一个小写字母

([A-Z])匹配大写字母

/([a-z])([A-Z])/g组合匹配小写字母后跟大写字母以及将匹配所有这些匹配项的全局标志。

当发现此类情况时,它们将被 $1 $2 替换(这里 $1 是第 1 组小写字母,$2 是第 2 组大写字母,以空格分隔)。

现在让我们看看thisIsSpinalTapIp是如何工作的

上述正则表达式将匹配sIsSlTpI

并将它们替换为s Is Sl Tp I

所以字符串变成Is Spinal Tap Ip

此链接将帮助您将其可视化正则表达式