正则表达式匹配直到“&”或“|”

时间:2014-10-13 10:57:31

标签: javascript regex conditional-statements

我有以下字符串[Field1]='Field1Value'|[Field2]='Field2Value'&[Field3]='Field3Value',我希望获得正则表达式匹配,直到"&""|",但我还要包含"&"或{{ 1}}在我的比赛中。

意味着我的字符串应该创建以下匹配项:

"|"

我现在正在使用1. [Field1]='Field1Value' 2. | 3. [Field2]='Field2Value' 4. & 5. [Field3]='Field3Value' ,但问题是返回:

([^&^\|]*)

2 个答案:

答案 0 :(得分:2)

您可以尝试以下代码。

> var s = "[Field1]='Field1Value'|[Field2]='Field2Value'&[Field3]='Field3Value'";
undefined
> s.match(/[^|&]+|[|&]/g)
[ '[Field1]=\'Field1Value\'',
  '|',
  '[Field2]=\'Field2Value\'',
  '&',
  '[Field3]=\'Field3Value\'' ]

<强>解释

  • [^|&]+匹配任何字符,但不能匹配|&一次或多次。
  • |
  • [|&]匹配|&符号。

答案 1 :(得分:0)

使用括号时,

Split可以返回分隔符:

var s = "[Field1]='Field1Value'|[Field2]='Field2Value'&";
s.split(/(\&|\|)/g);
/*
    ==> [
        "[Field1]='Field1Value'",
        "|",
        "[Field2]='Field2Value'",
        "&",
        ""
    ]
*/