พาลินโดรม
Palindrome คือคำ วลี หรือตัวเลขที่อ่านเหมือนกันย้อนกลับไปข้างหน้า เช่น มาลายาลัม มาดาม พยาบาล ฯลฯ
เราควรจะใช้นิพจน์ทั่วไปที่นี่เพื่ออนุญาตเฉพาะอักขระที่เป็นตัวอักษรและตัวเลขคละกัน "\W" เป็น regex ในตัวที่ทำให้งานของเราง่ายขึ้น มีบางขั้นตอนที่ต้องปฏิบัติตามเพื่อตรวจสอบว่าสตริงที่ระบุเป็น palindrome หรือไม่
ขั้นตอนที่ต้องปฏิบัติตาม
- ขั้นแรก เราต้องเปลี่ยนอักขระทั้งหมดของสตริงเป็นตัวพิมพ์เล็ก
- ต่อมา เราต้องลบค่าที่ไม่ใช่ตัวอักษรและตัวเลขคละกันทั้งหมด งานนี้สามารถทำได้โดยใช้นิพจน์ทั่วไป inbuilt ชื่อ '\W' หรือเราสามารถสร้างนิพจน์ทั่วไปของเราเองได้
- เราจำเป็นต้องแทนที่ค่าที่ไม่ใช่ตัวเลขและตัวอักษรทั้งหมดด้วย nothing("") งานนี้สามารถทำได้โดยใช้วิธีการ inbuilt ที่เรียกว่าแทนที่ ()
- เมื่อเราเอาค่าที่ไม่ใช่ตัวเลขและตัวอักษรจากสตริง เราจำเป็นต้องตรวจสอบว่าค่านั้นอ่านเหมือนกันในทิศทางย้อนกลับและไปข้างหน้าหรือไม่
- เราจำเป็นต้องย้อนกลับสตริงที่ปรับปรุงแล้วโดยใช้เมธอด string.reverse() และสตริงผลลัพธ์ควรถูกเปรียบเทียบกับสตริงเดิม
- หากทั้งคู่มีค่า "จริง" เท่ากัน จะแสดงในเอาต์พุต มิฉะนั้น "เท็จ" จะแสดงขึ้น
ในตัวอย่างต่อไปนี้ แม้จะส่งค่าที่ไม่ใช่ตัวเลขและตัวอักษร เช่น *, &ฯลฯ โปรแกรมจะตรวจสอบค่าตัวอักษรและตัวเลขและแสดงผลลัพธ์
ตัวอย่าง
<html>
<body>
<script>
function palindrome(str){
var reg = /[\W_]/g; // instead of '\W' we also can take "/[^a-zA-Z0-9]+/g"
var smstr = str.toLowerCase().replace(reg, "");
var reversed = smstr.split("").reverse().join("");
if(reversed === smstr){
document.write("true");
}
else {
document.write("false");
}
}
palindrome("a929a*/(';-=,.*")
</script>
</body>
</html> ผลลัพธ์
true