function trim ( str, charlist ) {
// Strip whitespace (or other characters) from the beginning and end of a string
// + original by: Ilia Kantor (http://javascript.ru)
charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
return str.replace(re, '');
}
Спасибо за функции! Обалденный сайт!
Однако в этом примере возможно где-то ошибка.
Я использую код этой функции для проверки вводимой в поле информации при регистрации пользователя (email и прочие, т.к. часто пользователи по ошибке могут ввести пробел, а потом долго маятся - что не так).
Так вот ошибка в следующем: если значение (value) в поле input начинается или заканчивается на букву "s" (именно маленькую), то она обрезается.
Например, если записать "sPhobos" в поле, то после применения описанной выше функции получится "Phobo".
Пока заметил только это.
Подскажите пожалуйста, как это лечить??? Я не очень разбираюсь в регулярных выражениях, но явно где-то там проблема.
Странно. Прочитал про символ \s в рег. выражениях. Поидее это и есть пробел.
\s
Совпадает с одиночным пробельным символом, включая space, tab, form feed, line feed.
Эквивалентно [ \f\n\r\t\v].
Однако, удалив его проблема исчезла.
В моём случае хватило исправить строку
на
тоесть осталось знак пробела, как таковой, и символ hex \xA0 ( честно, не в курсе какой это именно )) . Вроди от кодировки зависит. может тоже лучше убрать.)
Однако не знаю, на сколько я прав в своих действиях...
Проблема с вырезанием символа s решается очень просто. Нужно изменить ' \s\xA0' на ' \\s\\xA0'
Очень сложно. Из-за этого даже ошибки (внутри кавычек надо экранировать слэши, как подсказал ArtemkA). Всё-таки trim чаще всего нужен именно как trim (без charlist):
за \xa0 отдельное спасибо, сам бы заранее не догадался.
Есть ещё несколько реализаций php-функции trim, которые в зависимости от длины строки и кол-ва используемых символов, сильно разнятся по времени исполнения. Особенно интересно, что максимально быстро работает функция, не использующая регулярные выражения. Смотреть тут
Внимание вопрос: где ss ?
Возможно лучше использовать стандартные методы:
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/Trim