3

我有一些包含不可见字符的字符串,但它们在一些可预测的地方。通常包围我要提取的一段文本,然后在第二次出现之后我想保留其余的文本。

我似乎无法弄清楚如何关闭隐形字符,并将它们从我的结果中排除。为了匹配隐形我一直在使用这个正则表达式:/\xA0\x00-\x09\x0B\x0C\x0E-\x1F\x7F/这似乎确实有效。

这是一个例子:[invisibles]Keep as match 1[invisibles]Keep as match 2

到目前为止,这是我一直在使用但没有成功的方法:

/([\xA0\x00-\x09\x0B\x0C\x0E-\x1F\x7F]+)(.+)([\xA0\x00-\x09\x0B\x0C\x0E-\x1F\x7F]+)/(.+)

我在那里有捕获组,但是自从我不得不以这种方式使用正则表达式以来已经有一段时间了,所以我知道我错过了一些重要的东西。我希望只是使不可见的匹配成为非捕获组,但似乎 JavaScript 不支持这一点。

4

1 回答 1

1

像这样的东西似乎是你想要的。您拥有的第二个正则表达式非常有效,但是/完全错误。也许您没有正确读出组数据。

var s = "\x0EKeep as match 1\x0EKeep as match 2";
var r = /[\xA0\x00-\x09\x0B\x0C\x0E-\x1F\x7F]+(.+)[\xA0\x00-\x09\x0B\x0C\x0E-\x1F\x7F]+(.+)/;

var match = s.match(r);

var part1 = match[1];
var part2 = match[2];
于 2013-04-25T03:10:01.290 回答