Javascript 通过URL传递正则表达式

Javascript 通过URL传递正则表达式,javascript,java,regex,Javascript,Java,Regex,我有这样的资源端点:“…/rest/regex/{regex:.+}/matches{value:.+}”; 如何在url中安全地传递正则表达式?我如何编码它 在javascript中,我尝试执行以下操作: 公共匹配(regex:string,value:string):ng.IPromise{ 返回this.RestService.httpGet(this.path+this.escapeRegExp(regex)+ '/matches/'+encodeURIComponent(值)); }

我有这样的资源端点:“…/rest/regex/{regex:.+}/matches{value:.+}”; 如何在url中安全地传递正则表达式?我如何编码它

在javascript中,我尝试执行以下操作:

公共匹配(regex:string,value:string):ng.IPromise{
返回this.RestService.httpGet(this.path+this.escapeRegExp(regex)+
'/matches/'+encodeURIComponent(值));
}
escapeRegExp(str:string){
返回str.replace(/[-[\]{}()*+?,\\^$\\s]/g,'\\$&');
}
但是当我使用这个正则表达式时:
TNGSXGIN02BZ0(1 | 3)[1][8-9][0-5][0-9]\d{4}
java.util.regex.PatternSyntaxException:index 60(?i)附近的未关闭计数闭包^TNGSXGIN02BZ0/(1/| 3/)/[1/]/[8/-9/[0/-5/]/[0/-9/]/d/{4/}$

Java代码如下所示:

@Path(“regex”)
@RunInTransaction
@生成(MediaType.TEXT\u PLAIN)
公共最终类RegexService{
私有静态最终记录器LOG=LOG.getLogger();
@得到
@路径(“{regex:.+}/matches/{value:.+}”)
公共布尔匹配(@PathParam(“regex”)字符串regex,@PathParam(“value”)字符串值){
debug(“GET Test regex:{},value:{}”,regex,value);
返回模式。匹配((?i^“+regex+“$”,值);
}
}
更新: 当我在javascript中使用此选项时:

公共匹配(regex:string,value:string):ng.IPromise{
返回this.RestService.httpGet(this.path+encodeURIComponent(regex)+
'/matches/'+encodeURIComponent(值));
}
在Java中:

@GET
@路径(“{regex:.+}/matches/{value:.+}”)
公共布尔匹配(@PathParam(“regex”)字符串regex,@PathParam(“value”)字符串值){
debug(“GET Test regex:{},值为:{}”,urldecover.decode(regex,StandardCharsets.UTF_8),值);
返回模式.matches(“(?i)^”+urldecker.decode(regex,StandardCharsets.UTF_8)+“$”值);
}
我仍然有一个例外:

java.util.regex.PatternSyntaxException:索引60附近的未关闭计数闭包 (?i)^TNGSXGIN02BZ0/(1/| 3/)/[1/]/[8/-9/]/[0/-5/]/[0/-9/]/d/{4/}$


您需要URL编码和解码您的正则表达式

对于Javascript编码:


对于Java中的解码:

您还可以使用字符串构造函数:

让regex=newregexp(“.*”,“g”);
设urlRegex=encodeURIComponent(字符串(regex));
console.log(urlRegex);
让regexresult=newregexp(decodeURIComponent(urlRegex));
log(decodeURIComponent(urlRegex));

英文链接:Oups。谢谢你指出这一点,更新了答案。@ChristianBaumann它不起作用。我做错什么了吗?我更新了问题