regexp to allow only one space in between words

To match, what you need, you can use

var re = /^([a-zA-Z0-9]+\s)*[a-zA-Z0-9]+$/;

Maybe you could shorten that a bit, but it matches _ as well

var re = /^(\w+\s)*\w+$/;

function validate(s) {
    if (/^(\w+\s?)*\s*$/.test(s)) {
        return s.replace(/\s+$/, '');
    }
    return 'NOT ALLOWED';
}
validate('test ing')    // => 'test ing'
validate('testing')     // => 'testing'
validate(' testing')    // => 'NOT ALLOWED'
validate('testing ')    // => 'testing'
validate('testing  ')   // => 'testing'
validate('test ing  ')  // => 'test ing'

BTW, new RegExp(..) is redundant if you use regular expression literal.