私は何時間もこれにいて、行き止まりになっています。私は至る所で正規表現を読んだことがありますが、基本的なパターンよりも複雑なものとのマッチングにまだ問題があります。
だから、私の問題はこれです:
文字列で区切られた「&」をオブジェクトのリストに分割する必要がありますが、アンパサンドを含む値も考慮する必要があります。
ご不明な点がございましたら、お気軽にお問い合わせください。
var subjectA = 'myTestKey=this is my test data & such&myOtherKey=this is the other value';
アップデート:
さて、そもそも、素晴らしく思慮深い回答に感謝します。私がこれを行っている理由について少し背景を説明するために、JavaScriptでもう少しインテリジェントで、ASPのキーをサポートするCookieユーティリティを作成することです。
そうは言っても、次の正規表現は/([^&=\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';
すべてが再び強打から抜け出します。上記の正規表現の結果としてこれが発生する理由は理解できますが(非常に素晴らしい説明のためのkudos)、回避策を理解するための正規表現に(明らかに)十分に慣れていません。
重要な限り、ASPとASP.NETで理解できるCookieを読み書きできるようにするには、この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で良くなっています...クレイジー。