fat*_*Cop 5 javascript regex arrays
我有两个变量:
var input = "user1@gmail.com";
var prefferedPatterns = ["*@gmail.com", "*@yahoo.com", "*@live.com"];
Run Code Online (Sandbox Code Playgroud)
想要将输入与首选模式数组匹配。如果有任何模式匹配,则我必须执行某些任务(在此示例中,输入是确定的匹配)。如何匹配JavaScript中的一系列模式?
您可以将您的模式(如果它们是有效的正则表达式)编译为一个以提高性能:
var masterPattern = new RegExp(patterns.join('|'));
Run Code Online (Sandbox Code Playgroud)
把它们放在一起:
var input = 'user1@gmail.com';
var preferredPatterns = [
".*@gmail.com$",
".*@yahoo.com$",
".*@live.com$"
];
var masterPattern = new RegExp(preferredPatterns.join('|'));
console.log(masterPattern.test(input));
// true
Run Code Online (Sandbox Code Playgroud)
您需要RegExp在将变量作为正则表达式传递时使用构造函数。
var input = 'user1@gmail.com';
var preferredPatterns = [".*@gmail\\.com$", ".*@yahoo\\.com$", ".*@live\\.com$"];
for (i=0; i < preferredPatterns.length;i++) {
if(input.match(RegExp(preferredPatterns[i]))) {
console.log(preferredPatterns[i])
}
}
Run Code Online (Sandbox Code Playgroud)
点是正则表达式中的特殊元字符,可以匹配任何字符。您需要转义正则表达式中的点以匹配文字点。
正如@zerkms 所说,您也可以使用下面的模式列表。
var preferredPatterns = ["@gmail\\.com$", "@yahoo\\.com$", "@live\\.com$"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5641 次 |
| 最近记录: |