如何在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()
,而不是要测试的字符串。