繁体   English   中英

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

[英]How JavaScript regex work on this spinal case sentence

我有以下 JavaScript 功能:

 function spinalCase(str) { str = str.replace(/([az])([AZ])/g, '$1 $2'); console.log(str); } spinalCase('thisIsSpinalTapIp');

现在它向我展示了:

这是脊椎丝锥 Ip

我无法理解它如何识别space()以及为什么它在替换function 中使用2 个正则表达式 请问可以分解吗?

注意:这个 function 的目标是获取脊柱案例句子。

让我们分解一下:

([az])匹配小写字母

([AZ])匹配大写字母

/([az])([AZ])/g combine 匹配小写,后跟一个带有全局标志的大写字母,该标志将匹配所有这些出现。

当发现此类事件时,它们将被替换为 $1 $2(这里 $1 是第一组小写字母,$2 是第二组大写字母,由空格分隔)。

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

上面的正则表达式将匹配sIsSlTpI

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

所以字符串变成了这个 Is Spinal Tap Ip

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

正则表达式解析小写和大写字母序列的每次出现,将小写字母存储在$1中,将大写字母存储在$2中……然后将$1$2替换为$1 $2 ,例如插入一个空格。

以下比赛:

这 sIsS pina lt a pI p

所以你会有集合['sI','sS','lT','pI']将在其中添加空格

您在 RegEx 中通过括号创建了两个组名称 $1 和 $2。 $1 和 $2 指的是由这些组匹配的字符串。

并且这些字符串将替换 String.replace 的第二个参数中的 $1 和 $2。

每个组的名称就像 $Number,数字将按正则表达式中的括号顺序增加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM