私は後読みがJSでサポートされていないので、私はすでにこれを試みたが、エラー['http://some.com/\,brabra', 400, 500]
文字列をコンマで区切りますが、、?は無視します。
に文字列http://some.com/\,brabra,400,500
を分割したいです。 'http://some.com/\,brabra,400,500'.split(/(?<!\\),/g)
他にもこれを行うには?
私は後読みがJSでサポートされていないので、私はすでにこれを試みたが、エラー['http://some.com/\,brabra', 400, 500]
文字列をコンマで区切りますが、、?は無視します。
に文字列http://some.com/\,brabra,400,500
を分割したいです。 'http://some.com/\,brabra,400,500'.split(/(?<!\\),/g)
他にもこれを行うには?
あなたは(?:[^,\\]+|\\.)+
とのマッチングアプローチを使用することがあります:(?:[^,\\]+|\\.)+
マッチ,
と\
以外1+文字の1回以上の出現((?:...)+
):
match(/(?:[^,\\]+|\\.)+/g)
詳細を参照してください。 ([^,\\]+
)または(|
)任意のエスケープシーケンス(\\.
)
var s = "http://some.com/\\,brabra,400,500"
console.log(s.match(/(?:[^,\\]+|\\.)+/g));
または回避策に分割するコンマは常に数字で続く場合:
split(/,(?=\d)/)
を参照してくださいthis regex demo
var s = "http://some.com/\\,brabra,400,500"
console.log(s.split(/,(?=\d)/));
ニース。 '/(\\。| [^、])+/g'のようにわずかに単純化できます。 –
恐ろしくありがとうございます。 –
あなたは、文字列を反転させると、正先読みをシミュレート使用することができます。
String.prototype.reverse = function() {
return this.split("").reverse().join("");
}
Array.prototype.reverseElements = function() {
var ar = [];
for (var i = 0; i < this.length; i++) {
if (typeof this[i] === 'string')
ar[i] = this[i].reverse();
else {
//Do something if not a String
}
}
return ar;
}
var str = "http://some.com/\,brabra,400,500";
var ar = str.reverse().split(/,(?!\\)/).reverse().reverseElements();
console.log(ar);
注:正規表現はなく、スニペットで、hereに動作します。
古典的な、このような問題のために少し無粋なアプローチは、後で戻ってそれらを置く、魔法のトークンで一部の文字を置換する場合:?
str
.replace("\\,", "DONT_SPLIT_HERE")
.split(',')
.map(part => part.replace("DONT_SPLIT_HERE", "\\,")
は/ 'スプリット(/、(= \ d)は[お試しください) '](https://regex101.com/r/tG5vE6/1) –