JavaScript replace () метод: удалить пустое пространство только в конце и в начале строки [дубликат]

Возможные Дубликаты:
Как обрезать строку в javascript?

используя метод replace в javascript, я пытаюсь удалить пустое пространство между началом и концом строки:

вот мой код:

любая идея, как я должен достичь в результате?

input  -> "   first second     ".replace(/[^s|s$]/g, ''); // " "
output -> "first second"

6 ответов


Это называется тримминг.

вам нужны круглые скобки вместо скобок в регулярном выражении, а также множитель на спецификаторе пробела, чтобы соответствовать нескольким пробелам:

var s = "   first second     ".replace(/(^\s+|\s+$)/g, '');

демо:http://jsfiddle.net/Guffa/N7xxt/


добавить это в начале вашего скрипта:

// 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() удалить пробелы в начале и в конце строки.


вы должны использовать круглые скобки (), чтобы указать, что вы хотите соответствовать левой или правой стороне символа трубы"|", а не квадратные скобки. Квадратные скобки фактически соответствуют наборам символов (т. е. [виноград] будет соответствовать одному экземпляру "g", "r", "a", "p", "e" или "s", в то время как (виноград|яблоки) будет соответствовать "винограду" или "яблокам").

кроме того, еще одна вещь, которую вам не хватает, - это указание на "количество". Другими словами, как только вы сопоставите пробел (\s), сколько пространства следует искать? В вашем примере он соответствует только одному символу пробела. Вероятно, вы хотите сопоставить столько последовательных пробелов, сколько существует слева и справа от строки. Для этого вам нужно добавить * (соответствует нулю или более) или + (соответствует одному или более) сразу после символа \з.

Итак, чтобы переписать регулярное выражение:

var input = "      first second      ";
var trimmed = input.replace(/(^\s+|\s+$)/g, '');
console.log(trimmed);

вы можете скопировать и вставить эти строки в консоль JavaScript, чтобы увидеть, что вы получите желаемый результат. Регулярное выражение здесь буквально говорит: "сопоставьте один или несколько пробелов с начала строки или один или несколько пробелов сразу после окончания строки."Затем функция replace принимает это совпадение и заменяет его на ".


Почему заменить метод? Просто используйте trim. ТО ЕСТЬ. Из библиотеки jQuery

http://api.jquery.com/jQuery.trim/


Вы можете использовать jQuery trim.

<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, '');

должно работать ;-)