Как использовать регулярные выражения javascript для проверки «пустых» полей формы - PullRequest
12 голосов
/ 12 февраля 2010

Я работаю над проектом на основе php + javascript и уже создал макет по адресу: мой сайт

Я знал, как использовать javascript или php, чтобы проверить, является ли конкретное поле формы «пустым» или нет, то есть содержит ли оно буквенно-цифровые символы, кроме символов пробела (например, пробел, табуляция и символ новой строки).

Однако мой обычный apporach больше не работает, так как используемый мной плагин jquery теперь использует регулярные выражения для проверки полей.

Если вы перейдете на третью вкладку (3. Заполните информацию о доставке и произведите оплату), вы можете ввести что-то в поле Имя, и оно выполнит проверку автоматически. Хорошо. Однако если Вы просто помещаете туда несколько символов пробела и переходите к следующему полю, ну, это все равно хорошо для этого, что неверно, так как ни одно имя не является ничем!

Проблема? В конце есть регулярное выражение, подобное этому:

"noSpecialCaracters":{
                    "regex":"/^[0-9a-zA-Z ]+$/",
                    "alertText":"* No special caracters allowed"},

Это не отфильтровывает пустые символы.

Я искал в Интернете и изо всех сил старался придумать еще одно регулярное выражение, я попытался

"regex":"/^[^]+$/"

для сопоставления непустых символов, но это не сработает ...

Кто-нибудь может мне помочь? Большое спасибо заранее!

Ответы [ 6 ]

14 голосов
/ 12 февраля 2010

Попробуйте это не для пробелов:

([^\s]*)

Пример:

/([^\s])/.test("   A"); //TRUE
/([^\s])/.test("    "); //FALSE
10 голосов
/ 03 июня 2011
function anyChar(str){
    return /\S+/.test(str);
}

вернет false, если пустые данные

1 голос
/ 11 апреля 2013

Я использую

/^\s*\S+.*/

что означает

  • ноль или более пробельных символов (\s*), за которыми следует
  • один или несколько непробельных символов (\S+), за которыми следует
  • что-нибудь вообще, пробел или нет (.*).

Это позволяет одно слово или несколько слов. Я допускаю пробелы в начале, потому что я знаю, как легко пропустить один пробел в начале и быть действительно сбитым с толку, почему ваш ввод запрещен: |

Сеть разработчиков Mozilla имеет замечательную страницу регулярных выражений JavaScript для справки.

1 голос
/ 12 февраля 2010

Чтобы ответить на ваш вопрос, минимальное регулярное выражение - /\S/, которое будет соответствовать, пока есть хотя бы один непробельный символ.

Однако вы, вероятно, не хотите, чтобы кто-то вводил имя «12345» или «!!!», поэтому может быть лучше использовать /[a-z]/i, так как это регулярное выражение будет соответствовать, только если есть один алфавитный символ.

0 голосов
/ 12 февраля 2010
/^\s*[0-9a-zA-Z][0-9a-zA-Z ]*$/

, который гарантирует, что хотя бы один символ не является пробелом и является одним из разрешенных символов.

Вы также можете рассмотреть другие символы, такие как дефис (-) или апостроф ('), которые также могут появляться в именах ...

/^\s*[0-9a-zA-Z][0-9a-zA-Z '-]*$/
0 голосов
/ 12 февраля 2010

Вы можете попробовать обернуть ваше выражение в следующее ^\s*(expression)\s*$. Затем используйте группы, чтобы найти «обрезанные» совпадения. Это исключает только конечные или начальные пробелы.

Вы можете заставить пользователя вводить обрезанный текст, или вы можете грациозно принять необрезанный ввод (лучше), так как копирование и вставка текста часто оставляют некоторые конечные или начальные пробелы, о которых пользователь может не знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...