匹配char序列和其他不包含char序列的char序列

时间:2014-05-09 16:26:19

标签: javascript regex

这可能听起来像一个已经多次出现的问题,但我无法找到JavaScript的答案。

考虑流动的RegEx:

/("|,|\n|[^",\n]+)/

它匹配字符串中的一些字符以及不包含其中一个字符的任何其他序列。 asd"asd,asd\n符合:asd"asd,asd\n

我正在寻找符合相似方式但使用字符串的东西。

提供更有用的示例:

匹配'或'和'&'以及所有不是'或'和'&'的东西:

The constructor is good or bad? The man & the lord are good.

会匹配:

The constructoris goodor_ bad? The man&the lord are good.

或[]:

之间的匹配
`[The construct][or][ is good ][or][ bad? The man ][&][ the l][or][d are good.]`

将它想象成一个包含一组字符串的字符串,这些字符串由char序列(如“ab”)分隔。然后每个字符串表示由另一个序列(“cd”)分隔的一组其他字符串。 我想在大字符串中匹配所有那些作为分隔符的字符序列(“ab”,“cd”)和所有其他不是分隔符的字符序列。

1 个答案:

答案 0 :(得分:0)

首先,我要假设您打算在or的{​​{1}}处打破字符串。如果没有,请告诉我,我会调整,因为一般技术保持不变。

这是一个有趣的问题,因为据我所知,js没有像PHP那样分割字符串和保留分隔符的选项。

然而,有一种简单的方法可以实现这一目标。

第一步:Lordor的每个实例包围一个不寻常的文本块,稍后您将用它来分割字符串。这个正则表达式是...... drumroll ... &

js代码类似于(or|&)

输出:splitReady = str.replace(/(or|&)/mg, "[SPLIT]$1[SPLIT]");

第二步:在每个The construct[SPLIT]or[SPLIT] is good [SPLIT]or[SPLIT] bad? The man [SPLIT]&[SPLIT] the l[SPLIT]or[SPLIT]d are good.

分割字符串

[SPLIT]

这给了我们(空间可能无法在网站标记中正确显示):

result = splitReady.split(/\[SPLIT\]/m);The constructoris goodorbad? The man&the l or