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
进行匹配。但我得到null
。
问题出在哪里?
最佳答案
您无法连接正则表达式文字。但是,您可以连接字符串并使用它们来构建正则表达式对象:
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);
如果 word
包含正则表达式中具有特殊含义的字符,则需要 RegExp.escape
。它已被提议作为标准,但尚未被接受,因此您必须使用 here 中的代码手动定义它。 .
关于javascript - 使用javascript进行多个正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35612476/