18

次の文字列に基づいて

...here..
..there...
.their.here.

.javascriptを使用して、すべてのスペースを削除するトリムのように、文字列の先頭と末尾を削除するにはどうすればよいですか

出力は

here
there
their.here
4

6 に答える 6

34

これらは、このタスクの RegEx が次の理由です/(^\.+|\.+$)/mg

  1. 内側/()/には、文字列内で見つけたい部分文字列のパターンを記述します。

    /(ol)/これにより、文字列ol内の部分文字列が検索されます。

    var x = "colt".replace(/(ol)/, 'a');あなたに与えます x == "cat";

  2. ^\.+|\.+$inは記号[手段または]/()/によって 2 つの部分に分けられます。|

    ^\.+\.+$

    1. ^\.+.最初にできるだけ 多くを見つけることを意味します。

      ^開始時を意味します。\ は文字をエスケープします。文字の後ろに追加 +するとは、その文字を 1 つ以上含む任意の文字列に一致することを意味します

    2. \.+$.最後にできるだけ多くを見つけることを意味します。

      $最後にという意味です。

  3. mビハインドは、/()/文字列に改行文字または改行文字が含まれている場合に、^ および $ 演算子が文字列境界ではなく改行境界に対して一致するように指定するために使用されます。

  4. gbehindはグローバル マッチを実行するために使用されます。/()/そのため、最初のマッチの後に停止するのではなく、すべてのマッチを検索します。

RegEx の詳細については、このガイドをご覧ください。

于 2013-10-02T10:49:52.097 に答える
12

次の正規表現を使用してみてください

var text = '...here..\n..there...\n.their.here.';
var replaced =  text.replace(/(^\.+|\.+$)/mg, '');
于 2013-10-02T10:31:49.100 に答える
3

これが動作中のデモです

正規表現を使用/(^\.+|\.+$)/mg

  • ^最初に代表する
  • \.+1 つまたは複数のピリオド
  • $最後に表す

それで:

var text = '...here..\n..there...\n.their.here.';
alert(text.replace(/(^\.+|\.+$)/mg, ''));
于 2013-10-02T10:34:37.650 に答える
1

判読できない場合は、もう少しコードゴルフっぽい、非正規表現のプロトタイプ拡張:

String.prototype.strim = function(needle)   {
    var out = this;
    while (0 === out.indexOf(needle))
        out = out.substr(needle.length);
    while (out.length === out.lastIndexOf(needle) + needle.length)
        out = out.slice(0,out.length-needle.length);
    return out;
}

var spam = "this is a string that ends with thisthis";
alert("#" + spam.strim("this") + "#");

フィドルイゲ

于 2015-01-26T15:26:22.863 に答える
1

JavaScript置換で正規表現を使用する

var res = s.replace(/(^\.+|\.+$)/mg, '');
于 2013-10-02T10:32:52.657 に答える