【发布时间】:2019-05-10 12:19:16
【问题描述】:
我需要从旧界面解析出信息。我们无法更新旧消息。我对正则表达式不是很精通,但我设法写了一个能做我想做的事。我只需要同行评审和反馈以确保它是干净的。
来自旧系统的消息返回类似于以下示例的值。
%name0=value
%name1=value
%name2=value
Expression: /\%(.*)\=(.*)/g;
var strBody = body_text.toString();
var myRegexp = /\%(.*)\=(.*)/g;
var match = myRegexp.exec(strBody);
var objPair = {};
while (match != null) {
if (match[1]) {
objPair[match[1].toLowerCase()] = match[2];
}
match = myRegexp.exec(strBody);
}
此代码有效,我可以在名称/值的中间添加部分匹配而不会破坏任何内容。我必须假设任何字符组合都可能出现在“值”匹配中。这意味着它可以在消息中包含等号和百分号。
- 这够干净吗?
- 有什么东西会破坏表达式吗?
【问题讨论】:
-
如果您的代码运行良好并且没有问题,请考虑将问题发布到Code Review。
标签: javascript regex regex-lookarounds regex-group regex-greedy