使用正则表达式拆分带引号的搜索字符串

时间:2009-11-09 19:55:23

标签: javascript regex

我正在试图弄清楚如何将字符串拆分为可搜索的术语。我需要它

  • 拆分空格和单引号(忽略单个字符,非引用结果)
  • 返回没有引号的引用短语

因此,如果我将其应用于:“引用短语”单词 它会返回

  • 引用的短语

这是我到目前为止(在Javascript中),但我必须单独删除引号。

var searchArray = temp.match(/"[^"]*"|[^\s']{2,}/g);
for (index in searchArray)
    searchArray[index] = searchArray[index].replace(/"/g, '');

有没有办法只使用一个正则表达式?

1 个答案:

答案 0 :(得分:3)

这似乎有效,但我不确定我是否涵盖了所有情况。我不确定它在IE 5中是否可行,但这可能不会让你担心;它适用于IE 6和我尝试过的所有其他浏览器。它还从引号内的匹配中删除前导和尾随空格:

var regex = /("?)\s*\b(\S[^\1]*?)\b\s*\1/g;
var str = '"quoted phrase " single "quoted" words " yes "';
var res;

while ( (res = regex.exec(str)) ) {
    alert(res[2]);
}