0

この単純な正規表現は私を悩ませています。手を貸してもらえますか?

JavaScriptFoo's Barで戻るにはどうすればよいですか?foos-bar

var str = "Foo's Bar";
str.replace(/\s+/g, '-').replace('/[^a-zA-Z-]/g', '').toLowerCase();
return str;

私にできる最善のことはfoo's-bar、を残すこと'です。

ありがとう。

4

3 に答える 3

9

Esailja は適切です - あなたの正規表現は正しいですが、2 番目の正規表現は引用符で囲まれているため、文字列として解釈されています。それを修正すると、コードは完全に機能します。

str.replace(/\s+/g, '-').replace(/[^a-zA-Z-]/g, '').toLowerCase();
于 2012-11-08T20:49:51.907 に答える
0

順序を逆にして、一般的に単語やスペースの文字を避けてみてください

str.replace(/[^\w\s]+/g,'').replace(/\s+/g,"-").toLowerCase()
于 2012-11-08T20:54:42.860 に答える
0

コードには 2 つの問題があります。

  1. 正規表現パターンを引用しないでください (2 番目の最初のパラメーターreplace)
  2. 戻り値を代入する必要がありますstr

str = str.replace(/\s+/g, '-').replace(/[^a-zA-Z-]/g, '').toLowerCase();
于 2012-11-09T00:41:16.657 に答える