2015-01-09 1 views
0

Я пытаюсь проверить поле формы, мне нужны эти поля, допускающие только буквы и пробелы, но если я напишу пробел в форме, это поле не будет проверено, что такое регулярное выражение, которое позволяет писать пробелы?Regex, чтобы открыть пространство на Javascript

function isCharacter(element, message){ 
    var alphaExp = /^[a-zA-Z]\s+$/; 
    if(element.value.match(alphaExp)) { 
     return true; 
    } else { 
     alert(message); 
     return false; 
    } 
} 
+0

использование '\ s * 'вместо' \ s + 'обе стороны' [...] '. '\ s +' означает одно или несколько пробелов в конце строки. или лучше записать его внутри '[...]' иначе он будет принимать только один символ вместе с одним или несколькими пробелами. – Braj

+0

. Ваш квант '+' влияет только на '\ s', а не' [a-zA-Z] '. Таким образом, ваш шаблон соответствует символу, за которым следует любое количество пробелов. –

ответ

2

Вы можете заставить первый символ, который будет aphabet, а затем алфавита или пробелы как

/^[a-zA-Z][a-zA-Z\s]+$/ 

Это гарантирует, что вход подан не будет содержит пробелы в покое

"asdf asdf".match(/^[a-zA-Z][a-zA-Z\s]+$/) 
=> True 

" ".match(/^[a-zA-Z][a-zA-Z\s]+$/) 
=> False 
0

Может использоватьhtml5 pattern для легко обрабатывать

<input type="text" name="name" pattern="^[a-zA-Z\s]+$" /> 
 
<input type="submit" value="ok" name="ok" />

+0

На самом деле это не объясняет, что происходит с этим выражением. –

2

В проблема это с регулярным выражением, вы должны поставить \sвнутри[] для достижения Это.

var alphaExp = /^[a-zA-Z\s]+$/; 

Here's a DEMO.

0
var alphaExp = /^[a-zA-Z]+$/; 
var idLetters = ["a", "b", "m"]; 

var counter = 0; 
var counter1 = 0; 
var errors = ""; 

var numberonly = id.slice(0,-1); 
var lettersonly = id.slice(-1); 
+0

** Из очереди просмотра **: Могу ли я попросить вас добавить какой-то контекст вокруг вашего ответа. Кодовые ответы трудно понять. Это поможет читателю и будущим читателям, если вы сможете добавить дополнительную информацию в свой пост. – RBT

Смежные вопросы