javascript正则表达式替换不在apache中工作

时间:2016-09-29 13:04:11

标签: javascript apache-camel dsl

我正在使用apache camel 2.11和camel-script 2.2来支持spring DSL。

我想用群组进行正则表达式替换,但这似乎不适用于驼峰。

例如: - 在转换中,以下工作

<javaScript>request.body.toString().replace("Y","X")</javaScript>

即将YZ改为XZ

但以下情况并非如此: -

<javaScript>request.body.toString().replace("/(Y)(.*)$/g","\$1")</javaScript>

即。将YZXXX更改为Y

我已经在https://regex101.com/测试了正则表达式本身,所以我不相信它在正则表达式本身的语法问题

现在有可能camel-script只提供部分javascript支持。但我不确定是不是这样。任何想法?

2 个答案:

答案 0 :(得分:1)

我发现了这个问题: - )

问题是: - 我假设Camel javascript可以使用javascript函数......实际上它调用java函数。

将代码更改为java语法(使用regex的java语法调用replaceAll()函数)解决了这个问题。

答案 1 :(得分:0)

您需要使用正则表达式,而不是字符串看起来像正则表达式。比较:

错:

request.body.toString().replace("/(Y)(.*)$/g","\$1")

正确:

request.body.toString().replace(/(Y)(.*)$/g, "\$1")

话虽如此,替换模式中的反斜杠是多余的。 "$1"是正确的。