Write a palindrome program in JavaScript so that only alphanumeric values should be allowed?

A palindrome is a string that reads the same forwards and backwards. When checking palindromes with alphanumeric characters only, we need to ignore spaces, punctuation, and special characters, considering only letters (a-z) and digits (0-9).

For example, "A man, a plan, a canal: Panama" becomes "amanaplanacanalpanama" after removing non-alphanumeric characters, which is indeed a palindrome.

Basic Palindrome Check

Here's a simple approach using string manipulation methods to check if a string is a palindrome:

<!DOCTYPE html>
<html>
<body>
   <script>
      var str = "racecar";
      var splitstr = str.split("");
      var revstr = splitstr.reverse();
      var joinstr = revstr.join("");
      
      if(str === joinstr){
         document.write("String is a palindrome");
      } else {
         document.write("String is not a palindrome");
      }
   </script>
</body>
</html>
String is a palindrome

Alphanumeric Palindrome Using Regular Expressions

Regular expressions help us filter out non-alphanumeric characters before checking for palindromes. The pattern /[^A-Za-z0-9]/g matches any character that is not a letter or digit.

Steps to Follow

  • Convert the string to lowercase for case-insensitive comparison
  • Remove all non-alphanumeric characters using regex
  • Reverse the cleaned string
  • Compare the original cleaned string with its reverse

Method 1: Using /[\W_]/g Pattern

The [\W_] pattern matches non-word characters and underscores:

<!DOCTYPE html>
<html>
<body>
   <script>
      var str = 'A man, a plan, a canal: Panama';
      var reg = /[\W_]/g;
      var newstr = str.toLowerCase().replace(reg, "");
      document.write("Cleaned string: " + newstr + "<br>");
      
      var strsplit = newstr.split("");
      var revstr = strsplit.reverse();
      var joinstr = revstr.join("");
      
      if(joinstr === newstr){
         document.write("String is a palindrome");
      } else {
         document.write("String is not a palindrome");
      }
   </script>
</body>
</html>
Cleaned string: amanaplanacanalpanama
String is a palindrome

Method 2: Using /[^A-Za-z0-9]/g Pattern

This pattern explicitly defines what to remove - anything that's not a letter or digit:

<!DOCTYPE html>
<html>
<body>
   <script>
      var str = 'Race a car';
      var reg = /[^A-Za-z0-9]/g;
      var newstr = str.toLowerCase().replace(reg, "");
      document.write("Cleaned string: " + newstr + "<br>");
      
      var strsplit = newstr.split("");
      var revstr = strsplit.reverse();
      var joinstr = revstr.join("");
      
      if(joinstr === newstr){
         document.write("String is a palindrome");
      } else {
         document.write("String is not a palindrome");
      }
   </script>
</body>
</html>
Cleaned string: raceacar
String is not a palindrome

Complete Function Example

Here's a reusable function to check alphanumeric palindromes:

<!DOCTYPE html>
<html>
<body>
   <script>
      function isPalindrome(str) {
         // Remove non-alphanumeric characters and convert to lowercase
         var cleaned = str.toLowerCase().replace(/[^a-z0-9]/g, '');
         
         // Reverse the cleaned string
         var reversed = cleaned.split('').reverse().join('');
         
         return cleaned === reversed;
      }
      
      // Test with different strings
      var testStrings = [
         "A man, a plan, a canal: Panama",
         "race a car",
         "Madam",
         "121Malayalam121"
      ];
      
      testStrings.forEach(function(test) {
         var result = isPalindrome(test) ? "is" : "is not";
         document.write('"' + test + '" ' + result + ' a palindrome<br>');
      });
   </script>
</body>
</html>
"A man, a plan, a canal: Panama" is a palindrome
"race a car" is not a palindrome
"Madam" is a palindrome
"121Malayalam121" is a palindrome

Comparison of Regex Patterns

Pattern Description Removes
/[\W_]/g Non-word characters and underscores Spaces, punctuation, symbols, underscores
/[^A-Za-z0-9]/g Anything not alphanumeric Everything except letters and digits

Conclusion

Use regular expressions to clean strings before palindrome checking. The /[^A-Za-z0-9]/g pattern is more explicit and reliable for ensuring only alphanumeric characters remain in your palindrome validation.

Updated on: 2026-03-15T23:18:59+05:30

964 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements