javascript で replace メソッドを使用して、文字列の先頭と末尾の間の空白を削除しようとしています。
ここに私のコード:
どのように結果を達成する必要がありますか?
input -> " first second ".replace(/[^\s|\s$]/g, ''); // " "
output -> "first second"
javascript で replace メソッドを使用して、文字列の先頭と末尾の間の空白を削除しようとしています。
ここに私のコード:
どのように結果を達成する必要がありますか?
input -> " first second ".replace(/[^\s|\s$]/g, ''); // " "
output -> "first second"
これをトリミングといいます。
正規表現では角かっこの代わりにかっこが必要であり、複数のスペースに一致させるには、空白指定子の乗数も必要です。
var s = " first second ".replace(/(^\s+|\s+$)/g, '');
これをスクリプトの先頭に追加します。
// Add ECMA262-5 string trim if not supported natively
//
if (!('trim' in String.prototype)) {
String.prototype.trim= function() {
return this.replace(/^\s+/, '').replace(/\s+$/, '');
};
}
次にyourString.trim()
、文字列の先頭と末尾にあるスペースを削除するために使用します。
括弧 () を使用して、パイプ "|" の左側または右側に一致させることを指定する必要があります。角括弧ではなく記号。角括弧は実際には文字セットと一致します (つまり、[grapes] は "g"、"r"、"a"、"p"、"e"、または "s" のいずれかの単一のインスタンスに一致しますが、(grapes|apples) "grapes" または "apples" のいずれかに一致します)。
また、もう 1 つ欠けているのは、「数量」の表示です。言い換えれば、スペース (\s) に一致すると、何個のスペースを探す必要があるでしょうか? あなたの例では、単一のスペース文字のみに一致しています。おそらく、文字列の左右に存在する連続するスペースと同じ数だけ一致させたいでしょう。そのためには、文字 \s の直後に * (ゼロ以上に一致) または + (1 つ以上に一致) を追加する必要があります。
したがって、正規表現を書き直すには:
var input = " first second ";
var trimmed = input.replace(/(^\s+|\s+$)/g, '');
console.log(trimmed);
これらの行をコピーして JavaScript コンソールに貼り付け、目的の出力が得られることを確認できます。ここでの正規表現は文字通り、「文字列の先頭にある 1 つ以上の空白文字、または文字列の末尾に続く 1 つ以上の空白文字に一致する」ことを意味します。次に、replace 関数がその一致を取得し、それを '' に置き換えます。
メソッドを置き換える理由 トリムを使用するだけです。すなわち。jQueryライブラリから
jQueryトリムを使用できます。
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<pre id="original"></pre>
<pre id="trimmed"></pre>
<script>
var str = " first second ";
$("#original").html("Original String: '" + str + "'");
$("#trimmed").html("After trimed: '" + $.trim(str) + "'");
</script>
</body>
</html>
パターンを少し変更します。
(^\s+|\s+$)
その後
var string = " test ";
string.replace(/(^\s+|\s+$)/gm, '');
動作するはずです;-)