วิธีใดที่ดีที่สุดในการตรวจสอบว่าสตริงมีเฉพาะช่องว่างหรือไม่
สตริงได้รับอนุญาตให้มีอักขระรวมกับช่องว่าง แต่ไม่ใช่เฉพาะช่องว่าง
วิธีใดที่ดีที่สุดในการตรวจสอบว่าสตริงมีเฉพาะช่องว่างหรือไม่
สตริงได้รับอนุญาตให้มีอักขระรวมกับช่องว่าง แต่ไม่ใช่เฉพาะช่องว่าง
คำตอบ:
แทนที่จะตรวจสอบสตริงทั้งหมดเพื่อดูว่ามีเพียงช่องว่างหรือไม่ให้ตรวจสอบว่ามีอักขระที่ไม่ใช่ช่องว่างอย่างน้อยหนึ่งอักขระหรือไม่ :
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
คำตอบที่ง่ายที่สุดหากเบราว์เซอร์ของคุณรองรับtrim()
ฟังก์ชันนี้
if (myString && !myString.trim()) {
//First condition to check if string is not empty
//Second condition checks if string contains just whitespace
}
if (/^\s+$/.test(myString))
{
//string contains only whitespace
}
การตรวจสอบนี้สำหรับ 1 หรือช่องว่างมากกว่าตัวอักษรถ้าคุณมันยังตรงกับสตริงที่ว่างเปล่าแล้วแทนที่ด้วย+
*
ถ้าคุณใช้ jQuery มันจะง่ายกว่า
if ($.trim(val).length === 0){
// string is invalid
}
เพียงตรวจสอบสตริงกับ regex นี้:
if(mystring.match(/^\s+$/) === null) {
alert("String is good");
} else {
alert("String contains only whitespace");
}
if (!myString.replace(/^\s+|\s+$/g,""))
alert('string is only whitespace');
นิพจน์ทั่วไปที่ฉันใช้สำหรับเมื่อฉันต้องการให้มีช่องว่างตรงกลางสตริงของฉัน แต่ไม่ใช่ที่จุดเริ่มต้นหรือจุดสิ้นสุดคือ:
[\S]+(\s[\S]+)*
หรือ
^[\S]+(\s[\S]+)*$
ดังนั้นฉันรู้ว่านี่เป็นคำถามเก่า แต่คุณสามารถทำสิ่งต่างๆเช่น:
if (/^\s+$/.test(myString)) {
//string contains characters and white spaces
}
หรือคุณสามารถทำสิ่งที่nickfพูดและใช้:
if (/\S/.test(myString)) {
// string is not empty and not just whitespace
}
ฉันใช้วิธีการต่อไปนี้เพื่อตรวจสอบว่าสตริงมีเฉพาะช่องว่างหรือไม่ นอกจากนี้ยังจับคู่สตริงว่าง
if (/^\s*$/.test(myStr)) {
// the string contains only whitespace
}
วิธีนี้สามารถแก้ปัญหาได้อย่างรวดเร็ว
return input < "\u0020" + 1;
return input < " 1";
เป็นเพียงแค่การเปรียบเทียบตามตัวอักษร ตราบใดที่อินพุตถูกจัดเรียงต่ำกว่า "1" ก็จะส่งกลับค่าจริง ตัวอย่าง: return " asdfv34562345" < "\u0020" + 1;
ประเมินเป็นจริง