Регулярное выражение в javascript, чтобы не разрешать только пробелы в поле, но разрешать строку с пробелами, а также разрешать пустое поле - PullRequest
0 голосов
/ 02 декабря 2018

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

Например, если я ввожу такие строки, как «Это тест» или «тестирование», регулярное выражение должно пройти проверку.Также, если я ничего не введу в поле, оно должно пройти проверку.Он должен потерпеть неудачу, если я введу только пробелы.

Я пробовал перечисленные ниже, но они не сработали.

1) ^ [^ - \ s] [a-zA-Z0-9_ \ s-] + $ - не позволяет мне вводить строку с пробелами между

2) ^ [^ - \ s] [\ w \ s -] + $ - не позволяет мне вводитьстрока

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Разрешены ли пробелы в начале вашей строки?

Если это так, то должно сработать что-то подобное:

^$|.*\S+.*

В противном случае это должно сработать:

^$|^\S+.*

Объяснение:

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

Сначала мы проверим,Строка пуста с ^$.Это объясняется в другом вопросе здесь Регулярное выражение, которое соответствует шаблону или представляет собой пустую строку .

^ отмечает начало строки, которую мы хотим проверить на совпадение.

\S+ проверяет наличие непробельных символов.+ гарантирует, что должен быть хотя бы один или несколько из них.Это включает пробелы, символы табуляции, новые строки и т. Д.

.* соответствует любым символам (обозначается точкой) и любому их количеству или не имеет (обозначается *).


Все это предполагает, что вам нужно соответствовать всей строке.Если это не так, вы можете сократить выражение до:

^$|\S+

или

^$|^\S+

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

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

0 голосов
/ 02 декабря 2018

Это должно быть регулярное выражение?Если нет, вы можете сделать:

    if (userInput.length === 0 || (userInput.length > 0 && userInput.trim().length)) {
        console.log("user input ok");
    }

Где userInput - это то, что ввел пользователь.

userInput.trim() удаляет все пробелы в начале и конце строки.Таким образом, если длина равна 0, это будет false и означать, что строка была только пробелами.Любые пробелы между символами будут нормальными (userInput.trim() оставляет их в покое)

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