如何使用javascript RegExp()查找给定字符串中多个字符串的出现

时间:2013-03-01 06:43:42

标签: javascript jquery regex

我想检查给定字符串中多个字符串的可用性(不使用循环)。

my_string = "How to find occurence of multiple sting in a given string using javascript RegExp";
// search operated on this string
// having a-z (lower case) , '_' , 0-9 , and space

// following are the strings wanted to search .( having a-z , 0-9 , and '_')

search_str[0]="How";
search_str[1]="javascript";
search_str[2]="sting";
search_str[3]="multiple";
  • 我不需要他们的位置。
  • 我只需要知道所有的search_str 必须在my_string中
  • search_str的顺序永远不会影响结果。

是否有可用的正则表达式?

  

更新:我错过了什么

在答案中我发现这个问题正在解决上述问题

if (/^(?=.*\bHow\b)(?=.*\bjavascript\b)(?=.*\bsting\b)(?=.*\bmultiple\b)/.test(subject)) {
    // Successful match
}

但在这种情况下,它无效。

m_str="_3_5_1_13_10_11_";
search_str[0]='3';
search_str[1]='1';
tst=new RegExp("^(?=.*\\b_"+search_str[0]+"_\\b)(?=.*\\b_"+search_str[1]+"_\\b)");
if(tst.test(m_str)) alert('fooooo'); else  alert('wrong');

1 个答案:

答案 0 :(得分:5)

if (/^(?=.*\bHow\b)(?=.*\bjavascript\b)(?=.*\bsting\b)(?=.*\bmultiple\b)/.test(subject)) {
    // Successful match
}

这假设您的字符串不包含换行符。如果是,则需要将所有.更改为[\s\S]

我使用过单词边界锚来确保Howardresting不会意外地提供匹配。如果您确实要允许,请删除\b

<强>解释

(?=...)是一个先行断言:它在字符串中向前看,以检查所包含的正则表达式是否在当前位置匹配,而不会实际消耗匹配的字符。因此,一系列前瞻工作就像一系列正则表达式(通过^锚定到字符串的开头)与逻辑&&运算符组合。