2017-05-18 20 views
1

我想清楚,我不是在尋找解決方案。我真的很想了解正在做什麼。有了這個說法,所有的指針和建議都受到歡迎。我正在通過freecodecamp.com檢查Palindromes的任務。以下是描述。如果給定的字符串是一個迴文檢查迴文上freecode陣營(不想溶液)

,則返回true。否則,返回 false。

迴文是一個單詞或句子,其拼寫方式與 一樣向前和向後拼寫,忽略標點符號,大小寫和間距。

注意你需要刪除所有非字母數字字符 (標點符號,空格和符號),並在 以便檢查迴文把一切都小寫。

我們將傳遞不同格式的字符串,例如「racecar」,「RaceCar」, 和「race CAR」等。

我們還會傳遞帶有特殊符號的字符串,例如「2A3 * 3a2」,「2A3 3a2」和「2_A3 * 3#A2」。

這就是我現在的代碼,我正在通過這個工作,並使用chrome開發工具來弄清楚什麼可行,哪些不行。

function palindrome(str) { 
    // Good luck! 
str = str.toLowerCase(); 
//str = str.replace(/\D\S/i); 
str = str.replace(/\D\s/g, ""); 

for (var i = str.length -1; i >= 0; i--) 
str += str[i]; 
} 


palindrome("eye"); 

我不明白的是當下面的代碼在開發工具中運行時,「e」缺失。

STR = str.replace(/ \ d \ S/G 「」); 「raccar」

所以我的問題是正則表達式我會錯過了解的哪一部分?從我的理解,正則表達式應該只是擺脫空間和整數。

+0

將您的正則表達式粘貼到regex101.com並仔細閱讀說明。 –

回答

0

/\D\s/g被替換任何字符不是數字,後跟一個空格用「」。

所以,在race car,正則表達式匹配"e ",並以「」代替它,使字符串raccar

對於數字,你需要使用\d。我認爲使用OR會得到你想要的。所以,你可以嘗試像/\d|\s/g這樣的數字或空格。

希望這有助於在你的理解某種方式!

+0

啊,好的謝謝,這使得完美。我沒有意識到我可以使用或「|」在那裏。這應該讓我感動。 –

+0

不客氣!祝你好運! –

+0

'2_A3 * 3#A2'給出的測試案例如何? –