1

在 Javascript 中,我有一种情况,我将输入输入.split(/[ \n\t]/g)到一个数组中。关键是,如果一个空格前面直接有一个反斜杠,我不希望在那里发生拆分。

例如is_multiply___spaced_text->['is','multiply','','','spaced','text']

但是:is\_multiply\___spaced_text->['is multiply ','','spaced','text']

(为清楚起见,空格使用下划线)

如果这不是 Javascript(它不支持正则表达式中的lookbehinds),我会使用/(?<!\\)[ \n\t]/g. 这不起作用,那么处理这个问题的最佳方法是什么?

4

2 回答 2

1

您可以反转字符串,然后使用负前瞻,然后反转数组中的字符串:

var pre_results = "is\\ multiply\\   spaced text".split('').reverse().join('').split(/[ \t](?!\\)/);
var results = [];
for(var i = 0; i < pre_results.length; i++) {
    results.push(pre_results[i].split('').reverse().join(''));
}
for(var i = 0; i < results.length; i++) {
    document.write(results[i] + "<br>");
}

在此示例中,结果应为:

['text', 'spaced', '', 'is\\ multiply\\']
于 2013-02-11T14:21:33.897 回答
0
"is\_multiply\___spaced_text".replace(/\_/, " ").replace(/_/, " ").split("_");
于 2013-02-11T07:10:14.103 回答