Javascript Regular Expression ลบช่องว่าง


90

ดังนั้นฉันกำลังเขียนปลั๊กอินเล็ก ๆ น้อย ๆ สำหรับ JQuery เพื่อลบช่องว่างออกจากสตริง ดูที่นี่

(function($) {
    $.stripSpaces = function(str) {
        var reg = new RegExp("[ ]+","g");
        return str.replace(reg,"");
    }
})(jQuery);

นิพจน์ทั่วไปของฉันคือ[ ]+การรวบรวมช่องว่างทั้งหมด งานนี้ .. แต่มันไม่ได้ออกรสชาติดีในปากของฉัน .. ฉันยังพยายาม[\s]+และ[\W]+แต่ไม่ทำงาน ..

จะต้องมีวิธีที่ดีกว่า (กระชับมากขึ้น) ในการค้นหาเฉพาะช่องว่าง

คำตอบ:


231

ฉันขอแนะนำให้คุณใช้สัญกรณ์ตามตัวอักษรและ\sคลาสอักขระ:

//..
return str.replace(/\s/g, '');
//..

มีความแตกต่างระหว่างการใช้คลาสอักขระ\sและเพียงแค่' 'นี้จะจับคู่อักขระช่องว่างมากขึ้นเช่น'\t\r\n'ฯลฯ การค้นหา' 'จะแทนที่เฉพาะพื้นที่ว่าง ASCII 32

ตัวRegExpสร้างมีประโยชน์เมื่อคุณต้องการสร้างรูปแบบไดนามิกในกรณีนี้คุณไม่จำเป็นต้องใช้

ยิ่งไปกว่านั้นอย่างที่คุณพูด"[\s]+"ไม่ได้ทำงานกับตัวRegExpสร้างนั่นเป็นเพราะคุณกำลังส่งสตริงและคุณควร "หลบหนีสองครั้ง" เครื่องหมายทับด้านหลังมิฉะนั้นจะถูกตีความว่าเป็นอักขระที่ไม่อยู่ในสตริง (เช่น: "\s" === "s"(ไม่ทราบ หนี)).



1
str.replace(/\s/g,'')

ใช้ได้ผลสำหรับฉัน

jQuery.trim มีแฮ็คต่อไปนี้สำหรับ IE แม้ว่าฉันไม่แน่ใจว่าเวอร์ชันใดมีผลต่อ

// Check if a string has a non-whitespace character in it
rnotwhite = /\S/

// IE doesn't match non-breaking spaces with \s
if ( rnotwhite.test( "\xA0" ) ) {
    trimLeft = /^[\s\xA0]+/;
    trimRight = /[\s\xA0]+$/;
}

1

ลบช่องว่างทั้งหมดในสตริง

// Remove only spaces
`
Text with spaces 1 1     1     1 
and some
breaklines

`.replace(/ /g,'');
"
Textwithspaces1111
andsome
breaklines

"

// Remove spaces and breaklines
`
Text with spaces 1 1     1     1
and some
breaklines

`.replace(/\s/g,'');
"Textwithspaces1111andsomebreaklines"

1

ในการผลิตและทำงานข้ามสายงาน

สิ่งนี้ถูกใช้ในหลาย ๆ แอพเพื่อล้างเนื้อหาที่ผู้ใช้สร้างขึ้นโดยลบการเว้นระยะ / การส่งคืนพิเศษ ฯลฯ แต่ยังคงความหมายของช่องว่างไว้

text.replace(/[\n\r\s\t]+/g, ' ')

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.