用于在javascript中忽略字符串的正则表达式

用于在javascript中忽略字符串的正则表达式,javascript,regex,Javascript,Regex,我正在构建一个要提交到搜索的查询,其中一个输入字段是“或”的过滤器。我需要将空格替换为+或+…仅当空格出现在引用文本之外时。这就是逻辑: “快乐的日子”+或+“爱情船” 我的工作代码将在这里实现这一点: var filter2=$('[name=filter2]').val(); var str2 = jQuery.trim(filter2); var filter2d = str2.replace(/" "/g, "\"+OR+\""); 这只适用于文本中有引号的情况。我也希望能够做到这一点

我正在构建一个要提交到搜索的查询,其中一个输入字段是“或”的过滤器。我需要将空格替换为+或+…仅当空格出现在引用文本之外时。这就是逻辑:

“快乐的日子”+或+“爱情船”

我的工作代码将在这里实现这一点:

var filter2=$('[name=filter2]').val();
var str2 = jQuery.trim(filter2);
var filter2d = str2.replace(/" "/g, "\"+OR+\"");
这只适用于文本中有引号的情况。我也希望能够做到这一点:

fonzy+或+“快乐时光”+或+“爱情船”

感谢您提供的任何帮助

请记住:

var input = '"abc def" ghi "klmno pqr" xyz';
input.replace (/("[^"]*"|\w+)(\s+|$)/g,'$1+OR+').slice (0,-4) ===
'"abc def"+OR+ghi+OR+"klmno pqr"+OR+xyz'

这假设您的引号字符串不包含引号字符。

您也可以这样做

'"abc def" ghi "klmno pqr"'.match(/"[^"]*"|[^\s]+/g).join("+OR+");
这应该可以

function replaceWhiteSpace(str)
{
  insideAQuote = false;
  len = str.length
  for (i=0; i < len; i++)
  {
    if (str.charAt(i) == '"')
    {
      insideAQuote = !insideAQuote;
    }
    else if (str.charAt(i) == ' ' && !insideAQuote)
    {
      str = str.substr(0, i) + "+OR+" + str.substr(i+1);
    }
  }
  alert(str);
}
函数替换空格(str)
{
insideAQuote=false;
len=str.length
对于(i=0;i
Darn,在最后的字符串中遗漏了额外的+或+,如果fon$y有效,我将使用[^”]而不是\w。哦,另外,我认为您不需要担心尾随空间,因为var str2=jQuery.trim(filter2);回想起来,我注意到你的头衔说你在找一个正则表达式。。。哦,对不起。不管怎样,这都会起作用,而且我打赌速度也会更快。