2016-11-06 12 views
-2
<code> 
function palindrome(str) { 
    // Good luck! 
    str=str.toLowerCase(); 
    str=str.replace(/[^\Wa-z0-9]/gi," "); 
    str=str.replace(/[.,\s]/g, ''); 
    str=str.replace(/\//g, ""); 
    str=str.replace("(", "").replace(")", "").replace("0-0", "").replace(":-", "").replace(":",""); 
    var a=str.split(""); 
    a=a.reverse(); 
    a=a.join(""); 

    if(str===a){ 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

palindrome("0_0 (: /-\ :) 0-0"); 

</code> 

注:ここでは、すべての特殊文字、スペース、および大文字を削除し、渡された引数がパリンドロームかどうかを確認しようとしています。私はちょうど1行だけに正規表現を簡潔にする方法があるかどうかを知りたい。このJavascriptの正規表現をより簡潔にするにはどうすればよいですか?

+0

私は実際に問題を解決する方法について混乱していると思います。任意の文字列が前方と後方で同じであるかどうか確認しようとしていますか?あなたが渡す文字列には単語が含まれておらず、それは回文ではありません。また、文字列内の有効な文字とはどういうものかは不明です。ご質問の際はできるだけ具体的にご記入ください。 –

+0

'function palindrome(str){ str = str.toLowerCase()。(/ [^ a-z0-9]/g、" ");を置き換えます。 return str === str.split( "")。reverse()。join( "")?正誤; } ' –

+0

@Andy Ray私は、渡された引数がパリンドロムかどうかをチェックしたいと言っているときに特定のものだと思う。他の条件がすべて満たされている文字と空白がありません。私はこれも同様に問題に言及しました....次回は、ここで全体的な質問を書き留めて、より明確になるようにします。 –

答えて

2
str = str.toLowerCase().replace(/[^a-z0-9]/g, ''); 

文字列を小文字にし、英数字以外の文字をすべて削除します。

+0

ありがとう、これは動作します –

関連する問題