วิธีทำการแทนที่โกลบอลบนแบ็กสแลชในสตริงในจาวาสคริปต์

ฉันได้ลองแล้ว: (ในกรณีที่เครื่องหมายทับทั้งหมดทำให้อ่านยาก บรรทัดที่ 1 ควรแทนที่เครื่องหมายทับข้างหน้า บรรทัดที่ 2 ควรแทนที่เครื่องหมายแบ็กสแลช บรรทัดที่ 3 ควรแทนที่เครื่องหมายดอกจัน

newbigbend = bb_val.replace(/\//gi,"");
newbigbend = bb_val.replace(/\\/gi,"");
newbigbend = bb_val.replace(/*/gi,"");

เพื่อแทนที่เครื่องหมายทับ แบ็กสแลช และเครื่องหมายดอกจันทั้งหมด แต่เมื่อเบราว์เซอร์ไปถึงบรรทัดกลาง newbigbend = bb_val.replace(/\\/gi,""); ก็คิดว่ามันเป็นความคิดเห็นที่ไม่สิ้นสุด ฉันรู้ว่าต้องใช้การหลบหนีเพื่อแทนที่เครื่องหมายทับข้างหน้า ไม่แน่ใจเรื่องกลับ..


person Mike Felder    schedule 02.05.2011    source แหล่งที่มา
comment
bb_val ประกอบด้วยอะไรบ้าง? คุณอยากให้มันเป็นอะไร?   -  person shahkalpeshp    schedule 02.05.2011
comment
คุณสามารถทำได้ด้วยหนึ่ง regex แทนที่จะเป็นสาม: /[\/\\\*]/   -  person Znarkus    schedule 02.05.2011


คำตอบ (2)


ของ Andrew Cooper คำตอบถูกต้องในแง่ของสาเหตุที่ข้อความที่สามนั้นผิด แต่คุณยังเขียนทับ newbigbend ในแต่ละครั้ง ดังนั้นคุณจะไม่เห็นผลลัพธ์ของการแทนที่สองรายการแรกเลย

หากคุณกำลังพยายามแทนที่เครื่องหมายทับ แบ็กสแลช และเครื่องหมายดอกจันทั้งหมดด้วยสิ่งใด ให้ทำดังนี้

newbigbend = bb_val.replace(/[/\\*]/g, "");

โปรดทราบว่าคุณไม่จำเป็นต้องใช้แฟล็ก i เนื่องจากอักขระเหล่านี้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (และโปรดทราบว่าภายใน [] คุณไม่จำเป็นต้องหลีกเลี่ยง / หรือ * เนื่องจากไม่มีความหมายพิเศษ) ตัวอย่างสด

แต่ถ้าคุณต้องการให้เป็นสามคำสั่งเดี่ยวไม่ว่าด้วยเหตุผลใดก็ตาม ให้ใช้ newbigbend ในสองคำสั่งที่สอง (และเพิ่มแบ็กสแลชที่ Andrew ตั้งค่าสถานะไว้):

newbigbend = bb_val.replace(/\//gi,"");
newbigbend = newbigbend.replace(/\\/gi,"");
newbigbend = newbigbend.replace(/\*/gi,"");
person T.J. Crowder    schedule 02.05.2011
comment
@Mike: ไม่ต้องกังวล ดีใจที่ช่วยได้ - person T.J. Crowder; 02.05.2011

คุณต้องหลบหนี * ด้วย

newbigbend = bb_val.replace(/\*/gi,"");
person Andrew Cooper    schedule 02.05.2011