私は次の文字列を持っています:
Source: "HKID:A1234567~PKey:00888880~DOC:TKWC033330"
Regex: .*(HKID:.*?)(.+?)((?=~)|\s|\z)
JavaScript正規表現テストサイトでこれをテストすると、 A1234567が得られたので、すべて問題ありません。
この式をMirthチャネルのjavascriptトランスフォーマーに入れました。しかし、私が返すhk_id値は、nullまたは空の文字列です。
私が試したこと:
- 関数を使用します
re.match()
が、これは私にエラーを与えます、とmirthは言いますcannot find function match in object...
- 以下の正規表現を一重引用符で囲んでみました。
/
- 正規表現をテストするための最も単純な形式に縮小しようとしましたが
re.exec('.*')
、それでも空またはnull値を取得します。 - を実行する代わりに
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 + "";
}