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

我有以下 JavaScript 功能:


function spinalCase(str) {

  str = str.replace(/([a-z])([A-Z])/g, '$1 $2');

  console.log(str);

}


spinalCase('thisIsSpinalTapIp');

现在它向我展示:

这是脊椎穿刺 Ip

我不明白它如何识别space()以及为什么它在replace函数中使用2 个正则表达式。你能分解一下吗?

注意:此函数的目标是获取脊柱格语句。


UYOU
浏览 94回答 3
3回答

一只斗牛犬

让我们分解一下:([a-z])匹配一个小写字母([A-Z])匹配大写字母/([a-z])([A-Z])/gcombine 匹配小写字母后跟一个大写字母,并带有将匹配所有这些事件的全局标志。当发现此类事件时,它们将被替换为 $1 $2(此处 $1 是第 1 组小写字母,$2 是第 2 组大写字母,用空格分隔)。现在让我们看看thisIsSpinalTapIp是如何工作的上面的正则表达式将匹配sI、sS、lT和pI并用s I、s S、l T和p I替换它们所以字符串变成了 Is Spinal Tap Ip此链接将帮助您可视化它的正则表达式

茅侃侃

正则表达式解析一个小写字母和一个大写字母序列的每次出现,将小写字母存储在中,将大写字母存储$1在$2...中,然后替换$1$2为$1 $2,例如插入一个空格。以下比赛:这就是pina lT a pI p所以你会有一个集合['sI','sS','lT','pI'],其中将在两者之间添加空格

哔哔one

您在 RegEx 中通过括号创建了两个组名称 $1 和 $2。$1 和 $2 指的是那些组匹配的字符串。这些字符串将替换 String.replace 的第二个参数中的 $1 和 $2。每个组的名字就像$Number,这个数字会按照正则表达式中括号的顺序递增。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript