我已经在这工作了好几个小时了,我遇到了死胡同。我已经在各处阅读了正则表达式,但我仍然无法匹配比基本模式更复杂的任何内容。
所以,我的问题是这样的:
我需要将分隔为字符串的“&”拆分为对象列表,但我还需要考虑包含与符号的值。
如果您能提供任何帮助,请告诉我。
var subjectA = 'myTestKey=this is my test data & such&myOtherKey=this is the other value';
更新:
好的,首先,感谢您的精彩,周到的回复。为了说明我为什么要这样做的一些背景知识,它是在 JavaScript 中创建一个更智能的 cookie 实用程序,并且支持键 ala ASP。
话虽如此,我发现以下 RegExp/([^&=\s]+)=(([^&]*)(&[^&=\s]*)*)(&|$)/g
完成了我需要的 99% 的工作。我更改了以下贡献者建议的 RegExp,也忽略了空格。这使我可以将上面的字符串转换为以下集合:
[
[myTestKey, this is my test data & such],
[myOtherKey, this is the other value]]
]
它甚至可以在一些更极端的例子中使用,让我可以将字符串转换为:
var subjectB = 'thisstuff===myv=alue me==& other things=&thatstuff=my other value too';
进入:
[
[thisstuff, ==myv=alue me==& other things=],
[thatstuff, my other value too]
]
但是,当您使用以下字符串时:
var subjectC = 'me===regexs are hard for &me&you=&you=nah, not really you\'re just a n00b';
一切都再次失控。我理解为什么会因为上面的正则表达式而发生这种情况(非常棒的解释值得称赞),但我(显然)对正则表达式不够满意,无法找到解决方法。
就重要性而言,我需要这个 cookie 实用程序能够读取和写入 ASP 和 ASP.NET 可以理解的 cookie,反之亦然。通过使用上面的示例,我认为我们已经尽可能地采用了它,但如果我错了,任何额外的输入将不胜感激。
tl;dr - 几乎就在那里,但是否可以解释异常值subjectC
?
var subjectC = 'me===regexs are hard for &me&you=&you=nah, not really you\'re just a n00b';
实际输出:
[
[me, ==regexs are hard for &me],
[you, ],
[you, nah, not really you\'re just a n00b]
]
与预期输出:
[
[me, ==regexs are hard for &me&you=],
[you, nah, not really you\'re just a n00b]
]
再次感谢您的所有帮助。此外,我实际上在使用 RegExp 时变得更好......疯了。