Tôi đang cố phân tích các chuỗi được mã hóa url được tạo thành từ các cặp key = value được phân tách bằng một trong hai &
hoặc &
.
Sau đây sẽ chỉ khớp lần xuất hiện đầu tiên, tách các khóa và giá trị thành các phần tử kết quả riêng biệt:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
Kết quả cho chuỗi '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' sẽ là:
['1111342', 'Adam%20Franco']
Sử dụng cờ toàn cầu, 'g', sẽ khớp với tất cả các lần xuất hiện, nhưng chỉ trả về các chuỗi con được khớp hoàn toàn, không phải các khóa và giá trị được phân tách:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
Kết quả cho chuỗi '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' sẽ là:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Mặc dù tôi có thể tách chuỗi trên &
và tách riêng từng cặp khóa / giá trị, nhưng có cách nào sử dụng hỗ trợ biểu thức chính quy của JavaScript để khớp nhiều lần xuất hiện của mẫu /(?:&|&)?([^=]+)=([^&]+)/
tương tự như preg_match_all()
hàm của PHP không?
Tôi đang hướng tới một số cách để có kết quả với các trận đấu phụ được phân tách như:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
hoặc là
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replace
ở đây.var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });
làm xong. "Match ALL" trong JavaScript là "thay thế" bằng hàm xử lý thay thế thay vì chuỗi.