ฉันกำลังพยายามหานิพจน์ทั่วไปที่จะจับคู่อักขระใด ๆ ที่ไม่ใช่ตัวอักษรหรือตัวเลข ดังนั้นอักขระเช่น (,, @, £, () ฯลฯ ...
เมื่อพบแล้วฉันต้องการแทนที่ด้วยช่องว่าง
คำแนะนำใด ๆ.
ฉันกำลังพยายามหานิพจน์ทั่วไปที่จะจับคู่อักขระใด ๆ ที่ไม่ใช่ตัวอักษรหรือตัวเลข ดังนั้นอักขระเช่น (,, @, £, () ฯลฯ ...
เมื่อพบแล้วฉันต้องการแทนที่ด้วยช่องว่าง
คำแนะนำใด ๆ.
คำตอบ:
หากต้องการจับคู่สิ่งอื่นที่ไม่ใช่ตัวอักษรหรือตัวเลขคุณสามารถลองสิ่งนี้:
[^a-zA-Z0-9]
และเพื่อแทนที่:
var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');
นิพจน์ทั่วไปนี้จับคู่สิ่งที่ไม่ใช่ตัวอักษรตัวเลขหรือขีดล่าง ( _
) อักขระ
\W
ตัวอย่างเช่นใน JavaScript:
"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: " asdf 345345"
คุณกำลังมองหา:
var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');
สิ่งนี้จะแทนที่อักขระที่ไม่ใช่ตัวเลขและตัวอักษรทั้งหมดด้วยช่องว่าง
ตัว "g" ที่ด้านท้ายจะแทนที่เหตุการณ์ทั้งหมด
แทนการระบุ az (ตัวพิมพ์เล็ก) และแอริโซนา (ตัวพิมพ์ใหญ่) /[^a-z0-9]/gi
นอกจากนี้คุณยังสามารถใช้ตัวเลือกในกรณีที่มีความอ่อนไหว:
นี่เป็นวิธีที่สายเกินไป แต่เนื่องจากไม่มีคำตอบที่ยอมรับได้ฉันจึงต้องการให้สิ่งที่ฉันคิดว่าง่ายที่สุด: \ D - จับคู่อักขระที่ไม่ใช่ตัวเลขทั้งหมด
var x = "123 235-25%";
x.replace(/\D/g, '');
ผลลัพธ์ใน x: "12323525"
ดูhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
ลองทำ str.replace (/ [^ \ w] /); มันจะแทนที่ทั้งหมดที่ไม่ใช่ตัวอักษรและตัวเลขจากสตริงของคุณ!
แก้ไข 1: str.replace(/[^\w]/g, ' ')
str.replace(/[^\w]/g, ' ')
คือ หากคุณไม่รวมการ/g
ตั้งค่าสถานะจะแทนที่เหตุการณ์แรกเท่านั้น และถ้าคุณไม่กำหนดสตริงแทนที่นี่คือช่องว่าง' '
มันจะแทนที่ด้วยตำแหน่งundefined
ทั้งหมด \w
สุดท้ายขีดจะไม่ถูกแทนที่เพราะพวกเขาตรงกับ คำตอบนี้ไม่ใช่ความพอดี
/[A-Z]/ig
/[^A-Z]/ig
/[0-9]/g
หรือ/\d+/g
/[^0-9]/g
หรือ/\D+/g
/[^A-Z0-9]/ig
มีรูปแบบอื่น ๆ ที่เป็นไปได้
เพียงเพื่อให้คนอื่นเห็น:
someString.replaceAll("([^\\p{L}\\p{N}])", " ");
จะลบอักขระ Unicode ที่ไม่ใช่ตัวอักษรและไม่ใช่ตัวเลข
replaceAll
และการ\p{..}
หลีกเลี่ยงคุณสมบัติไม่ได้ถูกนำมาใช้อย่างกว้างขวาง
คุณได้ลองหรือstr = str.replace(/\W|_/g,'');
ไม่มันจะส่งคืนสตริงที่ไม่มีอักขระใด ๆ และคุณสามารถระบุได้ว่าอักขระพิเศษใด ๆ หลังแถบไปป์|
เพื่อจับพวกมันด้วย
var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, '');
มันจะกลับมา str = 1324567890abcJohnDoe
หรือมองหาตัวเลขและตัวอักษรและแทนที่ด้วยสตริงว่าง (""):
var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, '');
มันจะกลับมา str = '§$)% #$@';
หากต้องการจับคู่สิ่งอื่นที่ไม่ใช่ตัวอักษรหรือตัวเลขหรือตัวอักษรที่มีตัวกำกับเสียงเช่นé
คุณสามารถลองสิ่งนี้:
[^\wÀ-úÀ-ÿ]
และเพื่อแทนที่:
var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');
แรงบันดาลใจจากโพสต์ด้านบนพร้อมการสนับสนุนการกำกับเสียง
\w
ใช้สำหรับอักขระ Word และเหมือนกับ[a-zA-Z0-9_]
(สังเกตว่าขีดล่างถือเป็นอักขระคำ) ... ดังนั้นชวเลขจะเป็นstr.replace(/[^\w]/g, ' ')