regexp to allow only one space in between words

javascript, regex

Solution

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.

Problem

I'm trying to write a regular expression to remove white spaces from just the beginning of the word, not after, and only a single space after the word. Used RegExp: ``` var re = new RegExp(/^([a-zA-Z0-9]+\s?)*$/); ``` Test Exapmle: ``` 1) test[space]ing - Should be allowed 2) testing - Should be allowed 3) [space]testing - Should not be allowed 4) testing[space] - Should be allowed but have to trim it 5) testing[space][space] - should be allowed but have to trim it ``` Only one space should be allowed. Is it possible?

Original source