Регулярные выражения: проверка jQuery

#javascript #jquery #html #regex

#javascript #jquery — запрос #HTML #регулярное выражение #jquery

Вопрос:

Я работаю над формой ввода текста, которая требует, чтобы пользователь ввел букву «а», за которой следуют 6 исходящих чисел (0-9).

 (a|)d{6}
  

JS не позволяет пользователю вводить что-либо, кроме строки в этом формате.

Однако мне не везет. Пример моего кода находится здесь

Комментарии:

1. @AvinashRaj — нет, я пытаюсь, чтобы буква предшествовала цифрам

2. @VisioN — все еще безуспешно

3. поместите [0-9] вместо d .

4. @AvinashRaj d == [0-9]

5. @AmitJoki в некоторых языках мы должны использовать наиболее подходящий. Например, в . Net мы не используем d . Потому что он соответствует символам другого языка.

Ответ №1:

Это очень плохая идея — запретить пользователю вводить все, что он хочет. Вот почему:

Допустим, я пропустил клавишу, которую намеревался нажать, и в итоге ввел эту последовательность нажатий клавиш:

a123rBackspace456

Я бы ожидал, что мой промах был бы стерт моим обратным пространством, а остальная часть ввода прошла через него. Представьте, как я был бы удивлен, увидев там вместо этого «a12456», потому что ваш код уже не давал мне печатать r, а это значит, что мой Backspace стер 3 !

Вместо этого попробуйте это:

 <input type="text" name="code" pattern="a[0-9]{6}" required
               title="Please enter an amp;quot;aamp;quot; followed by six digits." />  

Демонстрация на JSFiddle

Эта функция HTML5 предотвратит отправку формы, если пользователь не введет данные в правильном формате. Это, в сочетании с подтверждением на стороне сервера, будет работать прекрасно. Кроме того, это работает даже в том случае, если у пользователя отключен JavaScript!

Тем не менее, для такого конкретного формата, возможно, было бы более полезно сделать это:

 a<input type="text" name="code" pattern="[0-9]{6}" required
                                     title="Please enter six digits" />
  

Демонстрация на JSFiddle

Таким образом, буква «а» уже есть и ее не нужно вводить, в результате чего пользователю остается ввести только ту часть, которая изменяется. На сервере просто вставьте «a» обратно в него.