2016-12-27 6 views
1

文字列から句読点や数字などを取り除くために正規表現を使用するコードスニペットがあります。私は私のリッピングされた文字列の出力とともに定義されていません。誰かが何が起きているのか説明できますか?おかげ正規表現はJavaScript文字列では未定義です

var regex = /[^a-zA-z\s\.]|_/gi; 
 

 
function ripPunct(str) { 
 
    if (str.match(regex)) { 
 
     
 
      str = str.replace(regex).replace(/\s+/g, ""); 
 
    } 
 
    
 
    return str; 
 
} 
 

 
console.log(ripPunct("*@£#[email protected]"));

答えて

2

あなたが最初replaceメソッドに置換パターンを渡すことはなく、また、パターンで、A-Z、ないA-zを使用する必要があります。また、交換する前に一致するかどうかチェックする必要はありません。replaceを直接使用してください。また、最初に既に空白(それには\sが含まれています)が削除されているので、2番目の連鎖のreplaceが冗長であるようです。さらに、[^a-zA-Z\s.]は、この文字クラスで指定されたシンボルの一部ではないので、アンダースコアと既に一致しているため、|_の代替も冗長です。

var regex = /[^a-zA-Z\s.]/gi; 
 

 
function ripPunct(str) { 
 
    return str.replace(regex, ""); 
 
} 
 

 
console.log(ripPunct("*@£#[email protected]"));

+0

おかげで、本当に助けました。上司 – knight

+0

私は助けてくれると嬉しいです。[回答を受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を検討してください。 –

関連する問題