Банальный запрос
socket.emit('register');
уронит ваш сервер с ошибкой, так как data будет undefined (null и undefined не могут иметь свойств)
Аналогично для data.login
Метод replace есть только у строк, вызов не функции так же выкинет ошибку
Правильно как то так:
const LOGIN_REGEX = /[^a-zA-Z0-9]/; //скомпилим регулярку заранее, дабы не компилить при каждом запросе
socket.on('register', function(data){
if(!data || typeof data.login !== 'string') { return; } //проверка на наличие и правильный тип
if(data.login.length < 4 || data.login.length > 12) { return; } //проверка на допустимую длину, числа ставьте свои
if(LOGIN_REGEX.test(data.login)) { return; } // такая проверка в 18 раз быстрее чем у Вас
new User({login: data.login}).save();
});