我有一个像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);
}
}
答案 0 :(得分:0)
您需要为您的逻辑运算符模式使用'ignore case'标记i
来减少重复的重复操作。
您可以在单个正则表达式中执行所有逻辑替换 - /\b(?:OR|AND|NOT)\b/gi
(i标志使匹配不区分大小写)。
您需要单独处理引用的字符串。在此fiddle中,引用的字符串被匹配并用于创建仅包含这些术语的新字符串。然后通过从原始输入(以及逗号)中删除引用的字符串来创建第二个新字符串。然后在,
上附加并拆分字符串。
如小提琴所示,您可以简单地将替换链接起来,而不是创建多个变量。