1function palindrome(str) {
2
3    var len = str.length;
4    var mid = Math.floor(len/2);
5
6    for ( var i = 0; i < mid; i++ ) {
7        if (str[i] !== str[len - 1 - i]) {
8            return false;
9        }
10    }
11
12    return true;
13}
141function palindrome(str) {
2  var re = /[\W_]/g;
3  var lowRegStr = str.toLowerCase().replace(re, '');
4  var reverseStr = lowRegStr.split('').reverse().join(''); 
5  return reverseStr === lowRegStr;
6}
7palindrome("A man, a plan, a canal. Panama");1function palindrome(str) {
2 var re = /[^A-Za-z0-9]/g;
3 str = str.toLowerCase().replace(re, '');
4 var len = str.length;
5 for (var i = 0; i < len/2; i++) {
6   if (str[i] !== str[len - 1 - i]) {
7       return false;
8   }
9 }
10 return true;
11}
12palindrome("A man, a plan, a canal. Panama");1const palindrome = (str) => {
2  var text = str.replace(/[.,'!?\- \"]/g, "")
3  return text.search(
4    new RegExp(
5      text
6        .split("")
7        .reverse()
8        .join(""),
9      "i"
10    )
11  ) !== -1;
12}
13  
14//or
15function palindrome(str) {
16  let text = str.replace(/[.,'!?\- \"]/g, "").toUpperCase();
17  for (let i = 0; i > text.length/2; i++) {
18    if (text.charAt(i) !== text.charAt(text.length - 1 - i)) {
19      return false;
20    }
21  }
22  return true;
23}
24console.log(palindrome("Able was I, ere I saw elba.")); //logs 'true'1function palindrome(str) {
2 // Step 1. The first part is the same as earlier
3 var re = /[^A-Za-z0-9]/g; // or var re = /[\W_]/g;
4 str = str.toLowerCase().replace(re, '');
5
6 // Step 2. Create the FOR loop
7 var len = str.length; // var len = "A man, a plan, a canal. Panama".length = 30
8 
9 for (var i = 0; i < len/2; i++) {
10   if (str[i] !== str[len - 1 - i]) { // As long as the characters from each part match, the FOR loop will go on
11       return false; // When the characters don't match anymore, false is returned and we exit the FOR loop
12   }
13   /* Here len/2 = 15
14      For each iteration: i = ?    i < len/2    i++    if(str[i] !== str[len - 1 - i])?
15      1st iteration:        0        yes         1     if(str[0] !== str[15 - 1 - 0])? => if("a"  !==  "a")? // false
16      2nd iteration:        1        yes         2     if(str[1] !== str[15 - 1 - 1])? => if("m"  !==  "m")? // false      
17      3rd iteration:        2        yes         3     if(str[2] !== str[15 - 1 - 2])? => if("a"  !==  "a")? // false  
18      4th iteration:        3        yes         4     if(str[3] !== str[15 - 1 - 3])? => if("n"  !==  "n")? // false  
19      5th iteration:        4        yes         5     if(str[4] !== str[15 - 1 - 4])? => if("a"  !==  "a")? // false
20      6th iteration:        5        yes         6     if(str[5] !== str[15 - 1 - 5])? => if("p"  !==  "p")? // false
21      7th iteration:        6        yes         7     if(str[6] !== str[15 - 1 - 6])? => if("l"  !==  "l")? // false
22      8th iteration:        7        yes         8     if(str[7] !== str[15 - 1 - 7])? => if("a"  !==  "a")? // false
23      9th iteration:        8        yes         9     if(str[8] !== str[15 - 1 - 8])? => if("n"  !==  "n")? // false
24     10th iteration:        9        yes        10     if(str[9] !== str[15 - 1 - 9])? => if("a"  !==  "a")? // false
25     11th iteration:       10        yes        11    if(str[10] !== str[15 - 1 - 10])? => if("c" !==  "c")? // false
26     12th iteration:       11        yes        12    if(str[11] !== str[15 - 1 - 11])? => if("a" !==  "a")? // false
27     13th iteration:       12        yes        13    if(str[12] !== str[15 - 1 - 12])? => if("n" !==  "n")? // false
28     14th iteration:       13        yes        14    if(str[13] !== str[15 - 1 - 13])? => if("a" !==  "a")? // false
29     15th iteration:       14        yes        15    if(str[14] !== str[15 - 1 - 14])? => if("l" !==  "l")? // false
30     16th iteration:       15        no               
31    End of the FOR Loop*/
32 }
33 return true; // Both parts are strictly equal, it returns true => The string is a palindrome
34}
35
36palindrome("A man, a plan, a canal. Panama");1function palindrome(str) {
2 var splitted = str.split("");
3 var reversed = splitted.reverse("");
4 var joined = reversed.join("");
5 return joined.toLowerCase().replace(/[^0-9a-z]/gi, '') == str.toLowerCase().replace(/[^0-9a-z]/gi, '')
6}
7