ฉันจะทำสิ่งนี้ได้อย่างไร?
โดยพื้นฐานแล้วฉันพยายามจับคู่อักขระเบ็ดเตล็ดทุกประเภทเช่นเครื่องหมายแอมเพอร์แซนด์อัฒภาคเครื่องหมายดอลลาร์ ฯลฯ
ฉันจะทำสิ่งนี้ได้อย่างไร?
โดยพื้นฐานแล้วฉันพยายามจับคู่อักขระเบ็ดเตล็ดทุกประเภทเช่นเครื่องหมายแอมเพอร์แซนด์อัฒภาคเครื่องหมายดอลลาร์ ฯลฯ
คำตอบ:
[^a-zA-Z\d\s:]
\d
และ\s
มีขยาย Perl ซึ่งมักจะไม่ได้รับการสนับสนุนโดยเครื่องมือที่มีอายุมากกว่าชอบgrep
, sed
, tr
, lex
ฯลฯ
สิ่งนี้ควรทำ:
[^a-zA-Z\d\s:]
หากคุณต้องการใช้อักขระละตินที่เน้นเสียง (เช่น. àÑ) เป็นตัวอักษรปกติ (เช่นหลีกเลี่ยงการจับคู่ด้วย) คุณจะต้องรวมช่วง Unicode ที่เหมาะสม ( \ u00C0- \ u00FF ) ใน regex ของคุณด้วยเช่นกัน จะมีลักษณะดังนี้:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
ลบล้างสิ่งที่ตามมาa-zA-Z
จับคู่ตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก\d
ตรงกับตัวเลข\s
จับคู่พื้นที่สีขาว (หากคุณต้องการจับคู่เฉพาะช่องว่างให้แทนที่ด้วยช่องว่าง):
จับคู่เครื่องหมายทวิภาค\u00C0-\u00FF
ตรงกับช่วง Unicode สำหรับอักขระละตินที่เน้นเสียงnb การจับคู่ช่วง Unicode อาจใช้ไม่ได้กับเอนจินregex ทั้งหมด แต่ข้างต้นใช้งานได้ใน Javascript (ดังที่เห็นในปากกานี้บน Codepen)
NB2 หากคุณไม่กังวลเกี่ยวกับการจับคู่ขีดล่างคุณสามารถแทนที่a-zA-Z\d
ด้วย\w
ซึ่งตรงกับตัวอักษรตัวเลขและขีดล่าง
ลองสิ่งนี้:
[^a-zA-Z0-9 :]
ตัวอย่าง JavaScript:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
ดูตัวอย่างออนไลน์:
ไม่มีตัวอักษรและตัวเลขเว้นวรรคสีขาวหรือ "_"
var reg = /[^\w\s)]|[_]/g;
หากคุณหมายถึง "อักขระที่ไม่ใช่ตัวเลขและตัวอักษร" ให้ลองใช้สิ่งนี้:
var reg =/[^a-zA-Z0-9]/g //[^abc]
regex นี้ใช้ได้กับC # , PCREและGo to name
ใช้ไม่ได้กับ JavaScript บน Chrome จากสิ่งที่RegexBuddyกล่าว แต่มีตัวอย่างอยู่แล้วที่นี่
ส่วนหลักนี้คือ:
\p{L}
ซึ่งแสดงถึง\p{L}
หรือ\p{Letter}
ตัวอักษรชนิดใดก็ได้จากภาษาใด ๆ
regex แบบเต็ม: [^\w\d\s:\p{L}]
ตัวอย่าง: https://regex101.com/r/K59PrA/2
ลองเพิ่มสิ่งนี้:
^[^a-zA-Z\d\s:]*$
สิ่งนี้ได้ผลสำหรับฉัน ... :)
^
และ$
จุดยึดจะ จำกัด ให้ตรงกับบรรทัดทั้งหมดและตัว*
ระบุปริมาณหมายความว่าตรงกับบรรทัดว่างด้วย
ใน JavaScript:
/[^\w_]/g
^
การปฏิเสธคือเลือกสิ่งที่ไม่อยู่ในชุดต่อไปนี้
\w
อักขระคำใด ๆ (เช่นอักขระที่เป็นตัวเลขและตัวอักษรบวกขีดล่าง)
_
ลบขีดล่างเนื่องจากถือว่าเป็นอักขระ 'word'
ตัวอย่างการใช้งาน - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/