Регулярное выражение, которое позволяет пробелы в строке, но не только пробелы

Мне нужно написать регулярное выражение для проверки формы, которое допускает пробелы внутри строки, но не допускает только пробела.

Например, 'Chicago Heights, IL' будет действительным, но если пользователь просто попал в пробел любое количество раз и попал в форму, это не подтвердило бы. Предваряя проверку, я попытался запустить if (foo != null) затем запустить регулярное выражение, но попадание в пробел по-прежнему регистрирует символы, так что это не работает. Вот что я сейчас использую, что позволяет использовать пробелы:

 ^[-a-zA-Z0-9_:,.' ']{1,100}$ 

    Я не уверен, что вам нужен RegEx . Почему бы просто не вызвать метод Trim() вашего языка, а затем убедиться, что результирующая строка не пуста?

    Это очень просто:. .*\S.*

    Для этого требуется один непространственный характер в любом месте. Синтаксис регулярного выражения предназначен для регулярных выражений, совместимых с Perl 5, если у вас есть другой язык, синтаксис может немного отличаться.

    Следующее ответит на ваш вопрос, как написано, но после этого см. Мою дополнительную заметку:

     ^(?!\s*$)[-a-zA-Z0-9_:,.' ']{1,100}$ 

    Объяснение: (?!\s*$) является отрицательным взглядом . Это означает: «Следующие символы не могут соответствовать подшаблону \s*$ ». Когда вы принимаете подшаблон во внимание, это означает: «Следующие символы не могут быть ни пустой строкой, ни строкой пробела до конца, поэтому после этой точки в ней должен быть по крайней мере один символ без пробелов Струна.” Как только у вас будет это правило, вы можете разрешить пробелы в своем classе символов.

    Дополнительное примечание: я не думаю, что ваш ' ' делает то, что вы намереваетесь». Похоже, вы пытались представить пространственный символ, но регулярное выражение интерпретируется как «буквальный апостроф». Внутри classа символов ' ' означает« соответствовать любому символу, который является либо ' , либо символом пробела, либо» (обратите внимание, что второй символ является избыточным). Я подозреваю, что вы хотите больше всего:

     ^(?!\s*$)[-a-zA-Z0-9_:,.\s]{1,100}$ 

    Вы можете использовать простой:

     ^(?=.*\S).+$ 

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

    См. Это на рублевом .

    Если бы мы хотели применить валидации только с разрешенным набором символов, я попытался использовать USERNAME_REGEX = /^(?:\s*[.\-_]*[a-zA-Z0-9]{1,}[.\-_]*\s*)$/;

    • Строка может содержать любое количество пробелов в начале или в конце или в промежутке, но будет содержать по меньшей мере один буквенно-цифровой символ.
    • Также допускаются необязательные ., _ , - символы, но строка должна иметь один буквенно-цифровой символ.

    Попробуйте это регулярное выражение:

     ^[^\s]+(\s.*)?$ 

    Это означает один или несколько символов, которые не являются пространством, а затем, необязательно, пробелом, за которым следует что-либо.

    Просто используйте \s* чтобы избежать одного или нескольких пробелов в регулярном выражении между двумя словами.

    Например, "Mozilla/ 4.75" и "Mozilla/4.75" оба могут быть сопоставлены следующим регулярным выражением:

     [AZ][az]*/\s*[0-9]\.[0-9]{1,2} 

    Добавление \s* соответствует нулю, одно или несколько пробелов между двумя словами.

    Interesting Posts

    Почему Java-код с внутренним classом генерирует третий файл SomeClass $ 1.class?

    Аутентификация Token для RESTful API: следует ли периодически менять токен?

    Как установить пользовательский цвет / стиль ActionBar?

    Конфигурирование истории файлов Windows 8 / 8.1 / 10 с помощью командной строки

    Windows не может восстановить даже с помощью sfc / scannow

    Как создать EditText с помощью кнопки cross (x) в конце?

    Какая диагностика безопасна для работы на накопителе SSD?

    Google Maps: как получить страну, штат / провинцию / регион, город, учитывая значение lat / long?

    Как установить шрифт Powershell по умолчанию для Consolas?

    Ключевые привязки и ключевые слушатели в Java

    Пропуск USB для QEMU получает ошибку «qemu: не удалось добавить USB-устройство»

    Как сделать снимок экрана над окном, большим, чем экран

    Несколько фильтров Pivotfields

    «Создание» объекта с возможностью копирования с возможностью memcpy

    AngularJS $ http-post – преобразовать двоичный файл в excel и загрузить

    Давайте будем гением компьютера.