ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingเขียน javascript regex ดึงค่าแบบนี้ยังไงครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: เขียน javascript regex ดึงค่าแบบนี้ยังไงครับ  (อ่าน 817 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
BOS
ก๊วนเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 459



ดูรายละเอียด เว็บไซต์
« เมื่อ: 02 พฤศจิกายน 2017, 16:15:13 »

สมมุติว่า ผมมี ชุดข้อความ ดังนี้
aaaaa[abc:d]bb[xxx]bbb[b:c]cc[z]ccc[cde:fg]xxx[y]zzz

พอจะมีวิธีที่จะใช้ regex ดึงข้อความที่อยู่ระหว่าง [..] เลือกเฉพาะชุดที่มี :
>> [abc:d], [b:c], [cde:fg]

ผมลองมั่วเองแล้ว แต่ก็ยังไม่ได้ตามที่ต้องการสักที
ท่านใดพอจะแนะนำได้บ้างครับ
ขอบคุณล่วงหน้าครับผม wanwan011
บันทึกการเข้า

infamous
ก๊วนเสียว
*

พลังน้ำใจ: 14
ออฟไลน์ ออฟไลน์

กระทู้: 295



ดูรายละเอียด
« ตอบ #1 เมื่อ: 02 พฤศจิกายน 2017, 16:38:48 »

ผมลองใน console แบบง่ายๆ ให้ดูพอเป็นแนวทางนะครับ

var text="aaaaa[abc:d]bb[xxx]bbb[b:c]cc[z]ccc[cde:fg]xxx[y]zzz";
var matches = text.match(/\([^)]*\)|\[[^\]]*\]/g);
var results=[];
for(var i=0;i<matches.length;i++){
 if(matches.indexOf(':')>-1){results.push(matches);}
}
results.join(',');
//[abc:d],[b:c],[cde:fg]

พอได้ subset แล้วก็ใช้ split หรืออะไรก็ตามสะดวกครับ
บันทึกการเข้า
infamous
ก๊วนเสียว
*

พลังน้ำใจ: 14
ออฟไลน์ ออฟไลน์

กระทู้: 295



ดูรายละเอียด
« ตอบ #2 เมื่อ: 02 พฤศจิกายน 2017, 16:43:15 »

เพิ่มเติมนะครับ ไอ้ matches.indexof เปลี่ยนเป็น matches นะครับ

ผมสงสัยว่า smf ของ TSB คงมีปัญหาเกี่ยวกับ ระบบ generate เรื่องวันเวลา

ตัวอย่างของท่าน
« แก้ไขครั้งสุดท้าย: 32 ธันวายน 2018, 25:61:61 โดย BOS »

มันมีที่ไหน 32 ธันวายน 2018
บันทึกการเข้า
BOS
ก๊วนเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 459



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 02 พฤศจิกายน 2017, 16:59:59 »

ตัวอย่างของท่าน
« แก้ไขครั้งสุดท้าย: 32 ธันวายน 2018, 25:61:61 โดย BOS »

มันมีที่ไหน 32 ธันวายน 2018
wanwan004 wanwan024


เพิ่มเติมนะครับ ไอ้ matches.indexof เปลี่ยนเป็น matches นะครับ

ผมสงสัยว่า smf ของ TSB คงมีปัญหาเกี่ยวกับ ระบบ generate เรื่องวันเวลา
คงเป็นเพราะ smf ใช้ bbcode [ i ] ก็เลยกลายเป็น tag font แบบ italic ไปโดยปริยายครับ wanwan024

ขอบคุณมากมายครับผม

ว่าแต่มันจะมีวิธีใช้ regex แบบเพียวๆ ไหมครับ แบบ บรรทัดเดียวจบ
แบบว่า ผมเป็นคนโลภมาก ได้คืบจะเอาศอก wanwan004
บันทึกการเข้า

infamous
ก๊วนเสียว
*

พลังน้ำใจ: 14
ออฟไลน์ ออฟไลน์

กระทู้: 295



ดูรายละเอียด
« ตอบ #4 เมื่อ: 02 พฤศจิกายน 2017, 17:29:27 »

ถ้าใน brackets มีแค่ตัวอักษร a-zA-Z กับ colon ก็ง่ายๆครับ
โค๊ด:
var matches = text.match(/\[([\w]+):([\w]+)]/g);

//[abc:d],[b:c],[cde:fg]
« แก้ไขครั้งสุดท้าย: 02 พฤศจิกายน 2017, 17:30:30 โดย infamous » บันทึกการเข้า
BOS
ก๊วนเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 459



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 02 พฤศจิกายน 2017, 18:58:58 »

ถ้าใน brackets มีแค่ตัวอักษร a-zA-Z กับ colon ก็ง่ายๆครับ
โค๊ด:
var matches = text.match(/\[([\w]+):([\w]+)]/g);

//[abc:d],[b:c],[cde:fg]

โค้ดนี้ใช้ได้ครับ นึกว่าจะได้เขียนแบบยาวๆซะละ
ขอบคุณมากมายครับผม wanwan017
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์