Как объединить выражения str.replace () в javascript? - PullRequest
9 голосов
/ 03 ноября 2011

Я хочу объединить все их выражения в одно и не имею понятия, как это сделать, нужно удалить конечный пробел и удалить начальный пробел, но сократить пробел между двумя словами, чтобы толькоодин (если их больше одного).Спасибо

var _str = document.contact_form.contact_name.value;
name_str = _str.replace(/\s+/g,' ');
str_name = name_str.replace(/\s+$/g,'');
name = str_name.replace(/^\s+/g,'');
document.contact_form.contact_name.value = name;

Ответы [ 4 ]

21 голосов
/ 03 ноября 2011

Вы можете объединить вторые два в одно регулярное выражение:

name = _str.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '');

Вы также можете взглянуть на метод jQuery trim .

Описание:Удалите пробелы из начала и конца строки.

1 голос
/ 03 ноября 2011
var name = _str.replace(/\s+$|^\s+/g,'').replace(/\s+/g,' '); 

Вы можете использовать символ | в своем регулярном выражении, чтобы соответствовать подвыражению по обе стороны от него, и вы можете связать несколько вызовов в .replace().

Кстати, не забудьте объявить все ваши переменные с var.

1 голос
/ 03 ноября 2011
document.contact_form.contact_name.value = _str.replace(/\s+/g,' ')..replace(/\s+$/g,'').replace(/^\s+/g,'');
0 голосов
/ 03 ноября 2011

Похоже, пришло время определить function compactify(str). Даже если бы вы могли втиснуть все это в один RegEx, результат будет трудно читать и хуже поддерживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...