我是JavaScript的业余爱好者。 I saw this other (now deleted) question,这让我很奇怪。你能告诉我下面的正则表达式究竟意味着什么吗?
split(/\|(?=\w=>)/)
是否将字符串与|
分开?
答案 0 :(得分:7)
正则表达式包含在斜杠中。 这意味着
\| # 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.
答案 1 :(得分:4)
它会在|
上拆分字符串,但前后只有[a-zA-Z0-9_]
和=>
中的字符串
示例:
它会在a|b=>
|
不会在a|b
|
答案 2 :(得分:2)
它在每个'|'上拆分字符串其次是(?)一个字母数字字符(\ w,[a-zA-Z0-9_]的简写)+字符序列'=>'。
Here's a link that can help you understand regular expressions in javascript
答案 3 :(得分:1)
正则表达式的细分:
/
正则表达式文字起始分隔符\|
匹配|
字符串,|
是正则表达式中的特殊字符,因此\
用于转义它(?=
是一个先行表达式,它会检查字符串是否跟在表达式后面而不匹配\w=>
匹配任何字母数字字符串(包括_
),后跟=>
)/
标记前瞻表达式的结束和正则表达式的结束简而言之,如果字符串后跟任何字母数字字符或下划线,然后|
,则该字符串将在=>
上拆分。
答案 4 :(得分:0)
在这种情况下,管道字符被转义,因此它被视为文字管道。拆分发生在管道上,后面跟着任何字母数字和'=>'。
'|'在正则表达式中也用作一种OR运算符。例如:
split(/k|i|tt|y/)
会分为'k','i','tt'或'y'字符。
答案 5 :(得分:0)
修剪分隔字符,我们得到\|(?=\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]
,这是所需的输出。