Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Mirth中运行javascript正则表达式_Javascript_Regex_Mirth - Fatal编程技术网

如何在Mirth中运行javascript正则表达式

如何在Mirth中运行javascript正则表达式,javascript,regex,mirth,Javascript,Regex,Mirth,我有一个字符串: Source: "HKID:A1234567~PKey:00888880~DOC:TKWC033330" Regex: .*(HKID:.*?)(.+?)((?=~)|\s|\z) 当我在JavaScript正则表达式测试中测试这个时,我得到了1234567,所以一切都很好 我把这个表达式放在欢乐频道的javascript转换器中。但是我得到的hk_id值不是空就是空字符串 我尝试过的事情: 使用函数re.match() 在对象中找不到函数匹配… 我试图在下面的正则表达式

我有一个字符串:

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

Regex:  .*(HKID:.*?)(.+?)((?=~)|\s|\z)
当我在JavaScript正则表达式测试中测试这个时,我得到了1234567,所以一切都很好

我把这个表达式放在欢乐频道的javascript转换器中。但是我得到的hk_id值不是空就是空字符串

我尝试过的事情:

  • 使用函数
    re.match()
    
    在对象中找不到函数匹配…
  • 我试图在下面的正则表达式或
    /
  • 我试图将正则表达式简化为一种最简单的测试形式,即
    re.exec('.'')
    ,但仍然得到空值或null值
  • 我没有运行
    RegExp.$1
    ,而是尝试只返回m,但没有产生任何差异
  • 我想这可以归结为我是如何逃避角色的,但我找不到任何关于这个的欢乐文档,如果你有任何见解,他们会非常感激

    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 + "";
    }
    
    var hk_id=Find_HKID();
    var xml_msg=
    ' ';
    var sResp=ResponseFactory.getSuccessResponse(xml\u msg)
    响应映射put('Response',sResp);
    函数Find_HKID()
    {
    风险值测试='HKID:A1234567~PKey:0088880~DOC:TKWC033330'
    var re=新的RegExp(测试);
    var m=re.exec('.*(HKID:.*)(.+?)((?=~)|\s|\z));
    返回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 + "";
    }
    

    顺便说一句,你不应该使用
    newregexp()
    ,它既慢又难看。直接使用正则表达式:

    var re = /.*(HKID:.*?)(.+?)((?=~)|\s|\z)/;
    
    编辑:喜欢Ωmega建议此正则表达式也适用于您,而且更精确:

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

    谢谢你,我觉得我需要一记耳光,哈哈,非常感谢你。@Fylix一个案子@Ωmega我想我是这样说的,因为我的测试字符串并不总是这样,基本上正则表达式执行以下操作:当我有~时获取值A1234567,或者它后面可能有空格,或者它后面可能没有任何内容。。。因此,我输入了\s | \z。。。我对正则表达式很陌生,所以你是对的,我可能比我应该做的更复杂。欧米茄,你提出了一个很好的正则表达式,但没能解决问题,仅此而已。没有理由愤怒地否决投票。这是Stackoverflow现场直播。@Fylix别担心,有时候周围有人把这个“游戏”看得太严重了。我想我的紫外线可以补偿这一点;)看看我在编辑中提到的正则表达式,它可能也适用于您。您将正则表达式字符串传递给
    new regex()
    ,而不是要测试的字符串。