В JavaScript нет встроенной функции для удаления пробелов в начале и конце строки, как например в PHP, где для этого используется функция trim. Под пробелами здесь подразумеваются символы SPACE, TAB, перенос строки и многое другое. Для реализации этой функции в JavaScript как правило пользуются регулярными выражениями. Один из таких способов опубликован в моей базе знания, в котором используется довольно таки простое регулярное выражение: «/^\s+|\s+$/».
Как оказалось, такое выражение будет работать правильно не во всех браузерах, поскольку символ «\s» реализован в них по-разному и некоторые символы не трактуются как «пробельные». Подробней об этом можете прочитать здесь (англ.). Из этого же источника привожу результаты сравнительных тестов, показывающих различие в работе со строками в различных браузерах.
Как вариант решения этой проблемы, вместо выражения «\s» можно использовать группировку по симолам Unicode для обрезаемых символов:
[\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029]
Один из вариантов реализации функций trim, trimLeft и trimRight с использованием такой группировки я нашел в библиотеке vice-versa:
/** vice-versa String
* @author Andrea Giammarchi
* @license Mit Style License
* @blog http://webreflection.blogspot.com/
* @project http://code.google.com/p/vice-versa/
* @version 0.20090710192302
* @note these method are about ECMAScript 5
*/
/** full specs String prototype trim, trimLeft, and trimRight
* @target Chrome, FireFox < 3.5, Internet Explorer, Opera, Safari
*/
(function(trim){
var o = {
trim:new RegExp("^" + trim + "|" + trim + "$", "g"),
trimLeft:new RegExp("^" + trim),
trimRight:new RegExp(trim + "$")
}, k;
for(k in o)
if(!String.prototype[k])
String.prototype[k] = (function(trim){
return function(){
return this.replace(trim, "");
};
})(o[k]);
delete o;
delete k;
})("[\\x09\\x0A-\\x0D\\x20\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+");
Источник: http://code.google.com/p/vice-versa/source/browse/trunk/src/String.js.
