ฉันพยายามที่จะสตริงเข้ารหัส URL แยกที่มีการสร้างขึ้นของคีย์ = คู่ค่าแยกจากกันโดยทั้งสองหรือ&
&
รายการต่อไปนี้จะจับคู่เหตุการณ์ที่เกิดขึ้นครั้งแรกโดยแยกคีย์และค่าออกเป็นองค์ประกอบผลลัพธ์แยกต่างหาก:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
ผลลัพธ์สำหรับสตริง '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' จะเป็น:
['1111342', 'Adam%20Franco']
การใช้ค่าสถานะโกลบอล 'g' จะจับคู่กับสิ่งที่เกิดขึ้นทั้งหมด แต่จะคืนค่าสตริงย่อยที่จับคู่อย่างสมบูรณ์ไม่ใช่คีย์และค่าที่คั่นด้วย:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
ผลลัพธ์สำหรับสตริง '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' จะเป็น:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
ในขณะที่ฉันสามารถแยกสตริง&
และแยกแต่ละคู่คีย์ / ค่าแต่ละมีวิธีการใช้การสนับสนุนการแสดงออกปกติของ JavaScript เพื่อให้ตรงกับหลายรูปแบบ/(?:&|&)?([^=]+)=([^&]+)/
คล้ายกับpreg_match_all()
ฟังก์ชั่นของ PHP ?
ฉันตั้งเป้าหมายที่จะรับผลลัพธ์จากการแยกย่อยการแข่งขัน:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
หรือ
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replace
ที่นี่var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });
เสร็จแล้ว "matchAll" ใน JavaScript คือ "แทนที่" ด้วยฟังก์ชันตัวจัดการการแทนที่แทนสตริง