Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态正则表达式匹配_Javascript_Regex - Fatal编程技术网

Javascript 动态正则表达式匹配

Javascript 动态正则表达式匹配,javascript,regex,Javascript,Regex,我有一些字符串,如下所示: var resource1 = '/myapi/person/pascal/address/town'; var resource2 = '/myapi/person/john/address/town'; var resource3 = '/myapi/person/messi/address/town'; 这就是我迄今为止所尝试的: var resource1 = '/myapi/person/pascal/address/town'; var resource

我有一些字符串,如下所示:

var resource1 = '/myapi/person/pascal/address/town';
var resource2 = '/myapi/person/john/address/town';
var resource3 = '/myapi/person/messi/address/town';
这就是我迄今为止所尝试的:

var resource1 = '/myapi/person/pascal/address/town';
var resource2 = '/myapi/person/john/address/town';
var resource3 = '/myapi/person/messi/address/town';
var pattern = '/myapi/person/(.*)/address/town';

var pattern = new RegExp(pattern);
if (pattern.test(resource1)){
    console.log('yes');   
}
模式是:

var pattern = '/myapi/person/(.*)/address/town';
这就是我迄今为止所尝试的:

var resource1 = '/myapi/person/pascal/address/town';
var resource2 = '/myapi/person/john/address/town';
var resource3 = '/myapi/person/messi/address/town';
var pattern = '/myapi/person/(.*)/address/town';

var pattern = new RegExp(pattern);
if (pattern.test(resource1)){
    console.log('yes');   
}
问题

如何动态使用该模式来检查
resource1
resource2
resource3
是否与该
模式匹配


关于。

以下正则表达式应该有效:

/\/myapi\/person\/(.*)\/address\/town/
它可以这样使用:

var string = '/myapi/person/pascal/address/town';
var re = /\/myapi\/person\/(.*)\/address\/town/;
re.test(string); //will return true
我鼓励您看看它是如何工作的:
我建议使用更严格的模式。使用求反字符类而不是贪婪的通配符

let resources=['/myapi/person/pascal/address/town',
“/myapi/person/john/address/town”,
“/myapi/person/mesi/address/town”];
var regex=newregexp('/myapi/person/([^/]+)/address/town');
for(var i=0,len=resources.length;i}
欢迎使用StackOverflow,我建议您阅读。将字符串存储在数组中而不是变量中。在.test方法中添加g | global标志是没有用的:“如果regex设置了global标志,test()将推进regex的lastIndex。后续使用test()将在lastIndex指定的str子字符串开始搜索“@Pato有没有对您有用的答案?