JavaScript的正则表达式替换不工作在Apache骆驼
我使用Apache驼峰2.11和骆驼脚本2.2的JavaScript支持春季DSL。JavaScript的正则表达式替换不工作在Apache骆驼
我想用组来做一个正则表达式替换,但这似乎并不适用于骆驼。
如: - 在变换,下面的工作
<javaScript>request.body.toString().replace("Y","X")</javaScript>
即更改YZ到XZ
但以下不会: -
<javaScript>request.body.toString().replace("/(Y)(.*)$/g","\$1")</javaScript>
即。更改YZXXX为Y
我已经测试过的正则表达式本身在https://regex101.com/,所以我不相信它在正则表达式本身
现在有语法问题有可能是骆驼脚本只能提供部分支持javascript。但我不确定情况是否如此。有任何想法吗?
您需要使用正则表达式,而不是看起来像正则表达式的字符串。比较:
错误:
request.body.toString().replace("/(Y)(.*)$/g","\$1")
正确:
request.body.toString().replace(/(Y)(.*)$/g, "\$1")
话虽这么说,反斜线在替换模式是多余的。 "$1"
将是正确的。
我发现这个问题:-)
的问题是: - 我是假设骆驼JavaScript可以使用JavaScript功能......而事实上,它调用Java函数。
将代码更改为java语法(使用正则表达式的java语法调用replaceAll()函数)解决了该问题。
[Camel supports JavaScript](http://camel.apache.org/javascript.html)以及'
那么它对我有用,而且javascript确实允许调用java函数..所以它可能是我称为javascript函数的方式的问题,或者是与Spring DSL一起使用javascript的限制? 在任何情况下,我会通过尝试调用外部简单Native JavaScript函数来查看这些工作是否有效.. – Shahed
好吧,这可能是由于request.body对象是一个java对象而不是JavaScript对象... – Shahed
没有..我也试过,以及张贴之前......但谢谢! – Shahed
你以前可能已经尝试过了,但是就JS而言,第一行代码不起作用,第二行代码行不通。 – Tomalak