Jquery 需要一个特定的Javascript匹配正则表达式

Jquery 需要一个特定的Javascript匹配正则表达式,jquery,regex,match,Jquery,Regex,Match,我目前有以下情况: var sText = 'I like stackoverflow'; if ( $(this).text().match( eval("/" + sText + "/ig") ) ) { 如您所见,这与整个字符串相匹配 我需要匹配包含所有单词的不区分大小写的文本。因此,它将查找“I”、“like”和“stackoverflow”。它必须包含所有3个单词 非常感谢您的帮助。既然.indexOf可以完成这项工作,为什么还要使用正则表达式呢 var str = $(this)

我目前有以下情况:

var sText = 'I like stackoverflow';

if ( $(this).text().match( eval("/" + sText + "/ig") ) ) {
如您所见,这与整个字符串相匹配

我需要匹配包含所有单词的不区分大小写的文本。因此,它将查找“I”、“like”和“stackoverflow”。它必须包含所有3个单词


非常感谢您的帮助。

既然
.indexOf
可以完成这项工作,为什么还要使用正则表达式呢

var str = $(this).text().toLowerCase();
if (str.indexOf('i')>=0 && str.indexOf('like')>=0 && str.indexOf('stackoverflow')>=0) {  
    // ...
}
(请注意,在本例中,“i”搜索是浪费的,因为它包含在“like”中,但我假设您的实际代码正在搜索更普通的文本。)


可能的相关问题:

您可以拆分然后循环-

var sText = 'I like stackoverflow';
var cText = 'stackoverflow like I';
var arr = sText.split(' ');
var match = true;

for (i=0;i<arr.length;i++) {
  if (!cText.match(eval("/" + arr[i] + "/ig"))) match= false;
}

alert(match);
var-sText='I like stackoverflow';
var cText='stackoverflow like I';
var arr=结构拆分(“”);
var匹配=真;

对于(i=0;i我想这就是你要寻找的——关键是单词边界

    var text = "text to match"

    var stringToLookFor = "I like stackoverflow";
    var words = stringToLookFor.split(" ");
    var match=true;
    $.each(words, function(index, word) {
        if(!text.match(eval("/\\b" + word + "\\b/i"))) {
            match=false;
            return false;
        }
    });

如果您确实需要使用匹配进行匹配,则可以使用多个正向前瞻模式。例如,要以任意顺序匹配
a
b
c

> p = /(?=.*a)(?=.*b)(?=.*c)/i

> 'abc'.match(p)
[""]

> 'cba'.match(p)
[""]

> 'ac'.match(p)
null

所以你想让它同时匹配
“我喜欢stackoverflow”
和yoda形式的
“stackoverflow我喜欢”
,但也要匹配字符串
“我不喜欢stackoverflow”
?问题不清楚是的,还有“我喜欢stackoverflow”!你可以使用RegExp对象代替eval,它有两个参数。第一个是字符串(基本上是regexp,但没有后面的斜杠),第二个是一串标志(在您的例子中是“ig”)。但是,如果我理解正确,关于这个主题,
var sText=“(I | like | stackoverflow)”
应该这样做吗?如果正确,我将在答案中添加is,如果不正确,请更具体一些。您是否附加到正则表达式?Javascript也有一个字符串拆分方法。也许我不理解这个问题。它是否必须只匹配整个单词?文本可能有500个单词长(+/-)@哈拉尔多:这就更有理由避免使用正则表达式了。(或者这条评论是为了另一个答案?)不,我正在查看您的条件。我添加了
return false
,如果一个单词不匹配,它将终止循环,从而提高性能。感谢您的时间-我似乎用Piet Delport的解决方案解决了这个问题。@Haraldo的方法是否在“like stackoverflow”上给出了假阳性匹配我的没有。我所需要的只是正则表达式,但是谢谢你的规则。修正了:eval(“/(?=.*”+aText.join(')(?=.')+”)/ig”))我很想看到这个基准测试有一个相当大的
sText
值,特别是与每个单词将它拆分为单个正则表达式相比。不过我不介意!这会匹配
“like Stackoverflow”
btw,因为它没有单词边界,并且
like
包含
i