所以我设法提取了一些文本,然后我将其保存为变量供以后使用,如何在所述文本中测试某些关键字?
以下是一个示例,checkTitle
是我提取的文字,我想在其中搜索某些关键字,在本例中,是compareTitle
中逗号分隔的字词。我想搜索字符串'5'
和'monkeys'
。
var checkTitle = "5 monkeys jumping on the bed";
var compareTitle = "5 , monkeys";
if (checkTitle === compareTitle) {
// ...
}
答案 0 :(得分:0)
您可以使用regular expressions搜索字符串,如果字符串包含单词,则test()
函数返回true / false。
/(?:^|\s)(?:(?:monkeys)|(?:5))\s+/gi.test("5 monkeys jumping on the bed");
将返回true,因为该字符串包含单词5和猴子(在本例中为两者)。
请参阅我的示例:http://regexr.com/39ti7使用网站工具分析正则表达式的各个方面。
如果您需要更改每次测试的单词,则可以使用以下代码:
function checkForMatches(){
var words = checkTitle.split(" , ");
var patt;
for (var i = 0; i < words.length; i++){
patt = patt + "(" + words[i] + ")|";
}
patt[patt.length-1] = "";
patt = new RegExp(patt, "i");
return patt.test(checkTitle);
}
将返回true,并允许您要检查的任何单词。它们必须像这样分开:
compareText = "word1 , word2 , word3 , so on , ...";
// ^^^notice, space-comma-space.
你可以在if语句中使用它:
var checkTitle = "5 monkeys jumping on the bed";
var compareTitle = "5 , monkeys";
if (checkForMatches()){
//a match was found!
}
答案 1 :(得分:0)
使用String.prototype.contains()
方法,您可以搜索字符串中的子字符串。例如,
"Hi there everyone!".contains("Hi"); //true
"Hi there everyone!".contains("there e"); //true
"Hi there everyone!".contains("goodbye"); //false
你也可以使用Array.prototype.indexOf()
来达到类似的效果:
("Hi there everyone!".indexOf("Hi") > -1) //true
("Hi there everyone!".indexOf("Hmmn") > -1) //false
但是,在这种方法中,我们甚至不需要使用上述任何方法,因为.match()
方法将为我们完成所有这些:
要返回匹配关键字的数组,请使用.match()
。它接受一个正则表达式作为参数,并返回一个与正则表达式匹配的子串数组。
var checkTitle = "5 monkeys jumping on the bed";
var compareTitle = "5 , monkeys";
/* ^^^
It is very important to separate each word with space-comma-space */
function getWords(str){ //returns an array containing key words
return str.split(" , ");
}
function matches(str, words){
var patt = "";
for (var i = 0; i < words.length; i++){
patt = (i > 0)? patt + "|" + "(" + words[i] + ")" : patt + "(" + words[i] + ")";
}
patt[patt.length-1] = "";
patt = new RegExp(patt, 'gi');
// ^ i makes it case-insensitive
return str.match(patt);
}
matches(compareTitle, getWords(checkTitle)); // should return ['5','monkeys']
您可以通过执行以下操作来检查是否存在匹配:
if (matches(compareTitle, getWords(checkTitle))){
// matches found
}
如果这个答案比第一个好,那么请接受这个答案。请求任何更多帮助,或者它是否无效。