我想删除两个双引号之间的逗号,并允许两个双引号之间的空格

时间:2014-05-21 00:40:09

标签: javascript regex

我有一个像txtKeyword这样的搜索字符串,它会接受以下所有突出显示技巧的案例

1.C# JAVA
2."C#" AND "JAVA"
5.C# "JAVA"
6.C#,'JAVA'
7.C#,"JAVA"
8.C#,"JAVA",'PHP'
9.C#,"JAVA" AND PHP

在上述所有情况下,C#和JAVA都会突出显示..但是

"MY SQL","SQL SERVER"

由于两个双引号之间的空格

,它不会突出显示MY SQL和SQL SERVER

所以最终数组就像["MY,SQL,SQL,SERVER"]

但我需要像["MY SQL,SQL SERVER,C#,Java"]

这样的最终数组

逻辑上的问题 -  我想删除两个双引号之间的逗号和两个双引号之间允许的空格,并删除两个双引号外的所有空格和用逗号分割数组

这是我的代码段

//Grab basic search string on resume result list
var grabBasicSearchKeyword = $("#txtKeyword").val();

if (grabBasicSearchKeyword!=null)
{
    //Remove Unnecessary Characters From Basic Search String
    var finalBasicSearchString = grabBasicSearchKeyword.replace(/[`~!@$%^&*()_|\-=?;:'"<>\{\}\[\]\\\/]/gi, '');

    //Check And Remove: "OR","AND","NOT","or","and" & "not" From Basic Search String
    if (finalBasicSearchString.indexOf('OR') || finalBasicSearchString.indexOf('AND') || finalBasicSearchString.indexOf('NOT') || finalBasicSearchString.indexOf('or') || finalBasicSearchString.indexOf('and') || finalBasicSearchString.indexOf('not'))
    {
        var findOR = finalBasicSearchString.replace(/OR/g, ' ');
        var findor = findOR.replace(/or/g, ' ');

        var findAND = findor.replace(/AND/g, ' ');
        var findand = findAND.replace(/and/g, ' ');

        var findNOT = findand.replace(/NOT/g, ' ');
        var findnot = findNOT.replace(/not/g, ' ');

        var removeDoubleQuote = findnot.replace(/"/g, '');
        var removeBackSlash = removeDoubleQuote.replace(/\\/g, '');
        var removeComma = removeBackSlash.replace(/,/g, ' ');
        var finalArray = removeComma.split(" ");

        for (var j = 0; j < finalArray.length; j++) {
            if (masterSkillArray.contains(finalArray[j])) {
                basicSearchHighlightArray.push(finalArray[j]);
            }
        }
        $(".skil-list").highlight(basicSearchHighlightArray);
        $(".post").highlight(basicSearchHighlightArray);        
    }
}

1 个答案:

答案 0 :(得分:0)

您需要为您的逻辑运算符模式使用'ignore case'标记i来减少重复的重复操作。

您可以在单个正则表达式中执行所有逻辑替换 - /\b(?:OR|AND|NOT)\b/gi(i标志使匹配不区分大小写)。

您需要单独处理引用的字符串。在此fiddle中,引用的字符串被匹配并用于创建仅包含这些术语的新字符串。然后通过从原始输入(以及逗号)中删除引用的字符串来创建第二个新字符串。然后在,上附加并拆分字符串。

如小提琴所示,您可以简单地将替换链接起来,而不是创建多个变量。