[英]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是如何工作的
上面的正则表达式将匹配sI 、 sS 、 lT和pI
并将它们替换为s I 、 s S 、 l T和p 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.