分析已知键的字符串正则表达式,但保留分隔符
Parse string regex for known keys but leave separator
好的,所以我在制作正则表达式时遇到了一点障碍。
本质上,我想要一个字符串,比如:
error=some=new item user=max dateFrom=2013-01-15T05:00:00.000Z dateTo=2013-01-16T05:00:00.000Z
要解析以读取
error=some=new item
user=max
dateFrom=2013-01-15T05:00:00.000Z
ateTo=2013-01-16T05:00:00.000Z
因此,我希望它提取已知的关键字,并忽略其他具有=的字符串。
我当前的正则表达式如下:
(error|user|dateFrom|dateTo|timeFrom|timeTo|hang)'=['w's'f'-':]+(?![(error|user|dateFrom|dateTo|timeFrom|timeTo|hang)'=])
所以我使用已知的关键字来动态使用,这样我就可以将它们列为已知关键字。
我怎么能把这个要求写进去呢?
您可以使用类似这样的替换:
var input = "error=some=new item user=max dateFrom=2013-01-15T05:00:00.000Z dateTo=2013-01-16T05:00:00.000Z";
var result = input.replace(/'s*'b((?:error|user|dateFrom|dateTo|timeFrom|timeTo|hang)=)/g, "'n$1");
result = result.replace(/^'r?'n/, ""); // remove the first line
结果:
error=some=new item
user=max
dateFrom=2013-01-15T05:00:00.000Z
dateTo=2013-01-16T05:00:00.000Z
另一种标记字符串的方法:
var tokens = inputString.split(/ (?=[^= ]+=)/);
正则表达式查找后面的空格(以=
结尾的非空格非等号序列),并在这些空格处进行拆分。
结果:
["error=some=new item", "user=max", "dateFrom=2013-01-15T05:00:00.000Z", "dateTo=2013-01-16T05:00:00.000Z"]
使用上面的技术并根据您的问题调整正则表达式:
var tokens = inputString.split(/(?='b(?:error|user|dateFrom|dateTo|timeFrom|timeTo|hang)=)/);
这将正确分割评论中提到的Qtax指出的输入:"error=user=max foo=bar"
["error=", "user=max foo=bar"]
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- JavaScript 拆分正则表达式保留分隔符
- 正则表达式保留/匹配任何以特定字符开头的单词
- 什么是用于删除大写字母之间的空格的正则表达式,但在单词之间保留空格
- JavaScript 正则表达式,用于保留 span 标签并删除其他标签
- 如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
- 如何在正则表达式匹配之间保留文本
- JavaScript到正则表达式只保留字母
- 运行正则表达式替换,同时忽略(但保留)某个字符
- JavaScript正则表达式,用于删除特殊字符和多余空格,同时保留逗号
- 编写一个包含特殊保留字符的Javascript正则表达式
- 正则表达式删除 000 并保留数字、减号和逗号
- 如何分割正则表达式空间和标点匹配,但保留结果数组中的标点符号
- 如何使用正则表达式只保留数字、逗号和点(出现在数字之间)
- 分析已知键的字符串正则表达式,但保留分隔符
- 只保留正则表达式匹配的一部分