簡體   English   中英

如何在Mirth中運行javascript正則表達式

[英]How to run javascript Regular Expression in Mirth

我有以下字符串:

Source: "HKID:A1234567~PKey:00888880~DOC:TKWC033330"

Regex:  .*(HKID:.*?)(.+?)((?=~)|\s|\z)

當我在JavaScript正則表達式測試站點上對此進行測試時,我得到了A1234567,所以一切都很好。

我將此表達式放在我的Mirth頻道的javascript轉換器中。 但是我返回的hk_id值為null或空字符串。

我嘗試過的事情:

  1. 使用函數re.match()但這給了我錯誤, re.match()cannot find function match in object...
  2. 我試圖在下面的正則表達式或/周圍加上單引號
  3. 我試圖將正則表達式簡化為最簡單的形式來測試re.exec('.*') ,但仍然得到空值或null值。
  4. 我沒有運行RegExp.$1 ,而是嘗試僅返回m,但是沒有任何區別。

我認為這可能歸結為我如何逃避角色,但我找不到有關此的任何Mirth文檔,如果您有任何見解,將不勝感激。

var hk_id = Find_HKID();
var xml_msg = 
'<?xml version="1.0" encoding="utf-8" ?> <XML><Barcode="'+hk_id+'" /></XML>';

var sResp = ResponseFactory.getSuccessResponse(xml_msg)
responseMap.put('Response', sResp);


function Find_HKID() 
{
   var test = 'HKID:A1234567~PKey:00888880~DOC:TKWC033330'
   var re = new RegExp(test);
   var m = re.exec('.*(HKID:.*?)(.+?)((?=~)|\s|\z)');
   return RegExp.$1 + RegExp.$2 + RegExp.$3 + "";
}

您將正則表達式和測試字符串混淆了,它應該是:

function Find_HKID() 
{
   var test = 'HKID:A1234567~PKey:00888880~DOC:TKWC033330'
   var re = new RegExp('.*(HKID:.*?)(.+?)((?=~)|\s|\z)');
   var m = re.exec(test);
   return RegExp.$1 + RegExp.$2 + RegExp.$3 + "";
}

現在它就像一種魅力:-D

順便說一句。 您不應該使用new RegExp() ,它速度慢且難看。 直接使用正則表達式:

var re = /.*(HKID:.*?)(.+?)((?=~)|\s|\z)/;

編輯:就像Ωmega提出的一樣,此正則表達式也可能對您有用,並且更精確:

var re = /.*(HKID:.*?)[~\s]/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM