使用javascript进行多个正则表达式匹配

时间:2016-02-24 20:31:09

标签: javascript regex

var wordsString="car/home/pencil,Joe/Hugh/Jack/Chris";
var word='home';
var pattern1=/^/+word;
var pattern2=/,/+word;
var pattern3 =/\//+word;

var matched = wordsString.match(pattern1+ /|/ +pattern2+ /|/ + pattern3 + /g/);

我想通过使用pattern1,pattern2,pattern3来匹配wordsString的结果。我需要根据pattern1或pattern2或pattern3进行匹配。但是我得到了。问题在哪里?

2 个答案:

答案 0 :(得分:1)

您无法连接正则表达式文字。但是,您可以连接字符串并使用它们来构建正则表达式对象:

var wordsString = "car/home/pencil,Joe/Hugh/Jack/Chris",
    word = 'home',
    escapedWord = RegExp.escape(word),
    patterns = ['^' + escapedWord, ',' + escapedWord, '/' + escapedWord],
    regex = new RegExp(patterns.join('|'), 'g'),
    matched = wordsString.match(regex);
如果RegExp.escape包含正则表达式中具有特殊含义的字符,则需要

word。它已被提议作为标准但尚未被接受,因此您必须使用here中的代码手动定义它。

答案 1 :(得分:0)

您无法以JavaScript的方式连接JavaScript中的Regex,但您可以连接包含单个正则表达式的字符串。不要逃避管道符号,这就是它与这个或那个匹配的方式。

var one = "test"
var two = "this"

var regex = new RegExp("^(first|" + one + "|" + two + ")")

var match = regex.test("this"); // matches
var noMatch = regex.test("no match"); // does not match