Ваш RegEx должен быть ^[A-Za-z 0-9]*$
:
Где
^
утверждает позицию в начале строки
A-Z
соответствует одному символу в диапазоне между A (индекс 65) и Z (индекс 90) (с учетом регистра)
a-z
соответствует одному символу в диапазоне между (индекс 97) и z (индекс 122) буквально (с учетом регистра)
соответствует пробелу
0-9
соответствует одному символу в диапазоне от 0 (индекс 48) до 9 (индекс 57) буквально (с учетом регистра)
*
квантификатор - соответствует от нуля до неограниченного количества раз, столько раз, сколько возможно, возвращая по мере необходимости
$
утверждает позицию в конце строка
Вы также можете использовать Условный (троичный) оператор , чтобы упростить решение следующим образом:
function notAString(string) {
var regex = new RegExp(`^[A-Za-z 0-9]*$`, 'g');
return regex.test(string)? 'String!' : 'Not a string!';
}
console.log(notAString('123 Test string')); // String!
console.log(notAString('Test@string')); // Not a string!