子模式匹配的正则表达式

时间:2017-03-22 06:50:25

标签: javascript regex

我想要正则表达式,如果任何连续的三个章程匹配,则返回true。 例如/[money]{3,}/g 它为mon,one,ney返回true,并为mny返回false。

2 个答案:

答案 0 :(得分:0)

我不会使用正则表达式,为什么不使用indexOf,更少的代码和更好的阅读。

类似于"money".indexOf("mon")>-1

这是一个演示,包含所有列出的示例:

let values = ["mon","one", "ney", "mny"];
let shouldMatch = "money";

for (let idx = 0; idx<values.length;idx++){
    console.info(values[idx], "=", shouldMatch.indexOf(values[idx])>-1);
}

但是 如果您想使用 RegExp ,您可以像这样使用它:
(顺便说一句:这只是编写上述例子的“奇特”方式)

let values = ["mon","one", "ney", "mny"];


function matcher(word, value){
    return (new RegExp(value)).test(word);
}

for (let idx = 0; idx<values.length;idx++){
    console.info(values[idx], "=", matcher("money", values[idx]));
}

  

守则基本上:

     

创建一个新的正则表达式exp。 (new RegExp("mon")) (等于/mon/而不仅仅是测试,如果“模式”与单词"money" (new RegExp("mon")).test("money")匹配,则返回{{1} }。

     

此处全部转过来,我们正在检查金钱是否符合(sub) - 模式 mon

答案 1 :(得分:0)

正则表达式用作搜索字符串,您的应用程序需要使用基本字符串并动态构建具有许多OR和前瞻/后端的疯狂正则表达式。对于您的应用程序,编写一个使用indexOf

的函数
function stringContainsSubstr(sourceStr, subStr) {
  return sourceStr.indexOf(subStr) !== -1;
}

var exampleStrs = ["mon", "one", "ney", "mny"];
var str = "money";

for (var i = 0; i < exampleStrs.length; i++) {
  console.log(stringContainsSubstr(str, exampleStrs[i]));
}

http://plnkr.co/edit/2mtV1NeD1MYta5v49oWr