分割字符串作为关键字:值对在javascript
我有一个字符串:分割字符串作为关键字:值对在javascript
"{key1:value1}{key2:value2}"
。
我想用正则表达式来拆分这些字符串:
"key1:value1","key2:value2"
。
最后我得到了像val.split(/{(.*?)}/);
出人意料的是,这个表情不是IE7的工作表现。 只是想知道为什么浏览器兼容正则表达式。而且,我们是否有任何替代的正则表达式来修复IE7。
我会做这种方式:
"{key1:value1}{key2:value2}".replace(/^{|}$/g, '').split('}{')
和它给你["key1:value1", "key2:value2"]
阵列。
我想它会给'[“{key1:value1”,“key2:value2}”]',这是不需要的。 – Borodin 2012-01-31 19:04:14
@Borodin不,请注意'.replace(/^{|} $/g,'')'这部分可以从开始和结束时删除这些大括号。 PS。我不会在没有测试的情况下发布它。 – dfsq 2012-01-31 19:08:36
是的你是对的。我现在正在使用这个。但只是好奇为什么我们不能在单一表达中做到这一点。 – gviswanathan 2012-01-31 19:36:47
而不是捕获您想要保留的项目(这将导致在从split
返回的那些值之间的空字符串)为什么不只是分割所有大括号?
val.split(/[{}]+/);
而不是试图让split
工作,我会这样用一个简单的全局匹配
val.match(/([^{}]+)/g);
这是很好的,除非有可能是在字符串中的空白,写在这种情况下, messier
val.match(/([^\s{}](?:[^{}]*[^\s{}])?)/g);
是必要的。
你也应该删除第一个'{'和最后一个'}',因为它们产生假的数组值:'[“”,“key1:value1”,“key2:value2”,“”]' – dfsq 2012-01-31 19:10:19
你说得对。但是这两个表达方式之间没有区别。任何如何在IE7中表达失败。这让我很惊讶。 – gviswanathan 2012-01-31 19:35:24
永远不要信任Internet Explorer。它遵守标准的声誉很差。 – Borodin 2012-01-31 21:32:50
http://blog.stevenlevithan.com/archives/cross-browser-split – 2012-01-31 18:50:54
你为什么要拆分它?它有效的JSON?或有效的JavaScript可能是'eval''d? – 2012-01-31 18:51:48
其无效的JSON,出于某种原因将其用作元数据。 – gviswanathan 2012-01-31 19:33:55