我是一个JavaScript的业余爱好者。 I saw this other (now deleted) question,这让我感到惊讶。你能告诉我下面的正则表达式究竟意味着什么?正则表达式 |(?= w =>)是什么意思?
split(/\|(?=\w=>)/)
它是否将字符串拆分为|
?
我是一个JavaScript的业余爱好者。 I saw this other (now deleted) question,这让我感到惊讶。你能告诉我下面的正则表达式究竟意味着什么?正则表达式 |(?= w =>)是什么意思?
split(/\|(?=\w=>)/)
它是否将字符串拆分为|
?
它拆分串上|
但只有当其随后在[a-zA-Z0-9_]
炭和=>
实施例:
它将在|
分裂a|b=>
它不会在分割a|b
|
它分割每个'|'字符串,然后是(?)字母数字字符(\ w,[a-zA-Z0-9_]的简写)+字符序列'=>'。
Here's a link that can help you understand regular expressions in javascript
正则表达式被包含在斜线。 这意味着
\| # A pipe symbol. It needs to be scaped with a backslash
# because otherwise it means "OR"
(?= # a so-called lookahead group. It checks if its contents match
# at the current position without actually advancing in the string
\w=> # a word character (a-z, A-Z, 0-9, _) followed by =>
) # end of lookahead group.
击穿的正则表达式:
/
正则表达式文本起始分隔符\|
字符串中匹配|
,|
是在正则表达式一个特殊字符,因此使用\
逃脱它(?=
是一个超前的表达式,它检查是否字符串如下表达没有匹配它\w=>
匹配任何字母数字串(包括_
),其次是=>
)/
标志着先行表达的端部与正则表达式在短的端部,如果字符串后跟任意字母数字字符或下划线,则字符串将在|
上拆分,然后=>
。
在这种情况下,管道字符会被转义,因此将其视为文字管道。分割发生在任何字母数字和'=>'之后的管道上。
'|'在正则表达式中也用作一种OR运算符。例如:
split(/k|i|tt|y/)
会分裂为'k','i','tt'或'y'字符。
剪裁定界字符,我们得到\|(?=\w=>)
|
是在正则表达式的特殊字符,所以应该用一个反斜杠转义为\|
(?=REGEX)
是提前正面看语法:只有匹配REGEX
匹配,但不会使用匹配REGEX
的子字符串。与REGEX
的匹配不成为匹配结果的一部分。如果它仅仅是\|\w=>
,则父字符串将被拆分为|a=>
而不是|
。因此/\|(?=\w=>)/
比赛只有那些|
字符后跟\w=>
。它匹配|a=>
但不|a>
,||
等
考虑从链接的问题的例子字符串:a=>aa|b=>b||b|c=>cc
。如果不是用于预测,split会产生一个数组[a=>aa, b||b, cc]
。随着向前看,你会得到[a=>aa, b=>b||b, c=>cc]
,这是所需的输出。