正则表达式匹配多个单词的变体

时间:2017-09-21 18:06:21

标签: javascript regex

我已将我的值存储在变量中:

var myvalue = "hello bye";
var myText = "hellobye is here and hello-bye here and hello.bye"

如何查看myvalue的变体是否出现在文字中?
我正在使用这种模式:

hello[-. ]*?bye

但是我不能像这样破坏我的变量值。还有一件事,如果我的值包含两个以上的元素怎么办?比如hello bye hi

2 个答案:

答案 0 :(得分:0)

您可以使用/\s+/g替换所有空白块(仅与[-.\\s]*?匹配)以创建正则表达式以匹配myvalue的变体:



var myvalue = "hello bye";
var myText = "hellobye is here and hello-bye here and hello.bye"
console.log(myText.match(new RegExp(myvalue.replace(/\s+/g, '[-.\\s]*?'), 'g')));




答案 1 :(得分:0)

我认为这样的事情就是你所追求的。如果你想要解释,请发表评论,我会尽力而为。

var myvalue = "hello bye";
var searchReg = new RegExp('(' + myvalue.replace(/ /g, ')[-. ]*?(') + ')', 'g');
console.log(searchReg.source);
//-> (hello)[-. ]*?(bye)
var myText = "hellobye is here and hello-bye here and hello.bye";

console.log(myText.replace(searchReg, '$1^^^^^$2'));
// -> hello^^^^^bye is here and hello^^^^^bye here and hello^^^^^bye

如果您不需要反向引用,则更容易阅读:

var searchReg = new RegExp(myvalue.replace(/ /g, '[-. ]*?'), 'g');