正则表达式\ |(?= \ w =>)是什么意思?

时间:2010-05-03 10:47:36

标签: javascript regex

我是JavaScript的业余爱好者。 I saw this other (now deleted) question,这让我很奇怪。你能告诉我下面的正则表达式究竟意味着什么吗?

split(/\|(?=\w=>)/)

是否将字符串与|分开?

6 个答案:

答案 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],这是所需的输出。