ฉันไม่ได้มีประสบการณ์มากกับ JavaScript แต่ฉันพยายามที่จะสร้างระบบแท็กที่แทนการใช้@หรือจะใช้#/
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
ฉันจะใช้ a /แทน#. ฉันได้ลองทำvar slash = '/'และเพิ่ม+ slash +แต่ล้มเหลว
ฉันไม่ได้มีประสบการณ์มากกับ JavaScript แต่ฉันพยายามที่จะสร้างระบบแท็กที่แทนการใช้@หรือจะใช้#/
var start = /#/ig; // @ Match
var word = /#(\w+)/ig; //@abc Match
ฉันจะใช้ a /แทน#. ฉันได้ลองทำvar slash = '/'และเพิ่ม+ slash +แต่ล้มเหลว
คำตอบ:
คุณสามารถหลบหนีได้เช่นนี้
/\//ig; // Matches /
หรือเพียงแค่ใช้ indexOf
if(str.indexOf("/") > -1)
คุณต้องหนี/ด้วย\.
/\//ig // matches /
หากคุณต้องการใช้/คุณจำเป็นต้องหลบหนีด้วยไฟล์\
var word = /\/(\w+)/ig;
ในนิพจน์ทั่วไป "/" เป็นอักขระพิเศษที่ต้องใช้ Escape (ตั้งค่าสถานะ AKA โดยการใส่เครื่องหมาย \ ไว้ข้างหน้าดังนั้นจึงเป็นการปฏิเสธฟังก์ชันพิเศษที่อาจให้บริการ)
นี่คือสิ่งที่คุณต้องการ:
var word = /\/(\w+)/ig; // /abc Match
อ่านเกี่ยวกับอักขระพิเศษ RegEx ได้ที่นี่: http://www.regular-expressions.info/characters.html
คุณยังสามารถแก้ไขการจัดการ JS พิเศษของสแลชไปข้างหน้าได้โดยการใส่ไว้ในกลุ่มอักขระดังนี้:
const start = /[/]/g;
"/dev/null".match(start) // => ["/", "/"]
const word = /[/](\w+)/ig;
"/dev/null".match(word) // => ["/dev", "/null"]
/[/]/ /\//
/[/]/อ่านและทำงานได้ง่ายกว่า แต่น่าเสียดายที่โปรแกรมตรวจสอบ RegEx บางตัวจะรายงานว่า "ตัวคั่นที่ไม่ใช้ค่า Escape จะต้องมีการใช้เครื่องหมายแบ็กสแลช"แม้จะอยู่ในกลุ่มอักขระก็ตาม ฉันเปลี่ยนกลับไปเป็น/\//แบบน่าเกลียดแล้ว
คุณสามารถหลีกเลี่ยงได้โดยนำหน้าด้วย\(ทำให้เป็น\/) หรือใช้new RegExp('/')เพื่อหลีกเลี่ยงการหลีกเลี่ยงนิพจน์ทั่วไป
ดูตัวอย่างใน JSFiddle
'/'.match(/\//) // matches /
'/'.match(new RegExp('/') // matches /
สำหรับฉันฉันพยายามจับคู่/ในวันที่ใน C # ฉันทำได้โดยใช้(\/):
string pattern = "([0-9])([0-9])?(\/)([0-9])([0-9])?(\/)(\d{4})";
string text = "Start Date: 4/1/2018";
Match m = Regex.Match(text, pattern);
if (m.Success)
{
Console.WriteLine(match.Groups[0].Value); // 4/1/2018
}
else
{
Console.WriteLine("Not Found!");
}
JavaScript (\/)ยังจะสามารถที่จะใช้ในทำนองเดียวกัน
ฉันพบปัญหาสองประการที่เกี่ยวข้องกับสิ่งที่กล่าวมาเมื่อแยกข้อความที่คั่นด้วย\และ/และพบวิธีแก้ปัญหาที่เหมาะกับทั้งสองอย่างนอกเหนือจากการใช้new RegExpซึ่งต้องใช้\\\\ในตอนเริ่มต้น การค้นพบนี้อยู่ใน Chrome และ IE11
นิพจน์ทั่วไป
/\\(.*)\//g
ไม่ทำงาน, ไม่เป็นผล. ฉันคิดว่าสิ่ง//นี้ถูกตีความว่าเป็นการเริ่มต้นของความคิดเห็นทั้งๆที่มีอักขระหลบหนี นิพจน์ทั่วไป (ใช้ได้เท่าเทียมกันในกรณีของฉันแม้ว่าจะไม่ใช่โดยทั่วไป)
/\b/\\(.*)\/\b/g
ไม่ได้ผลเช่นกัน ฉันคิดว่าข้อที่สอง/ยุตินิพจน์ทั่วไปทั้งๆที่อักขระหลบหนี
สิ่งที่ไม่ทำงานสำหรับฉันคือการแสดง/เป็นซึ่งเป็นตัวแทนของเลขฐานสิบหก\x2F /ฉันคิดว่ามีประสิทธิภาพและเข้าใจได้มากกว่าการใช้new RegExpงาน แต่แน่นอนว่าต้องมีความคิดเห็นเพื่อระบุรหัสฐานสิบหก
Forward Slash เป็นอักขระพิเศษดังนั้นคุณต้องเพิ่มแบ็กสแลชก่อนเครื่องหมายทับเพื่อให้ทำงานได้
$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/";
โดยที่ / แสดงถึงการค้นหา / ด้วยวิธีนี้คุณ