Денис Юрьев, так получилось, а почему вот это непробельный символ ? [^\s] – любой непробельный символ, то же, что и \S.
^ чем он отличается от начала строки ?
потому что у вас регулярка в виде строки оформлена, а в js строках \ - это символ экранирования, поэтому нужно писать так new RegExp('^[a-z\\s-]+$','g').test(value);
или можете писать так /^[a-z\s-]+$/g.test(value)