如何拆分(非值)后跟(值)?

时间:2012-03-16 21:29:47

标签: javascript regex

我这里有这个代码:

var fields = row.split(/regex goes here/);

我想在每次出现

时拆分行
|

但不是

*|

如何编写这个简单的正则表达式。我觉得有一种不同的性格,但我现在似乎无法找到一个好的参考。

我知道我需要像|一样逃避特殊字符\| ..但是如何添加not part?

可能我只会将标记切换为

|*

而不是

*|

而且我可以在MDN上找到这种形式 - 只有在没有y后才匹配x。

x(?!y)

我在这里测试:

http://www.regexpal.com/

在这里找到了一个很好的参考

http://www.regular-expressions.info/reference.html

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp#Special_characters_in_regular_expressions

2 个答案:

答案 0 :(得分:2)

请勿在分隔符上split()。只需.match() 分隔符之间的所有

var fields = row.match(/(?:\*\||[^|])*/g);

<强>解释

(?:    # Match either
 \*\|  # *|
|      # or
 [^|]  # any character except |
)*     # Repeat as needed

答案 1 :(得分:1)

您需要的是JavaScript不支持的lookbehind。

  

最后,JavaScript,Ruby和Tcl等版本不支持   尽管他们确实支持前瞻,但他们完全不知所措。    - http://www.regular-expressions.info/lookaround.html

你需要做某种黑客攻击。用某种独特的字符序列替换所有*|。然后在|上拆分,最后将这些特殊字符序列替换回*|

作为旁注。如果您要创建某种wiki引擎,可以尝试查找已准备好的one