RegExp для ввода, который не начинается или заканчивается пробелами - PullRequest
0 голосов
/ 16 марта 2020

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

Я стремлюсь к решению без JavaScript так что веб-сайт может использоваться в веб-браузерах, таких как «Храбрый», или пользователями, которые активируют блокиратор JavaScript, такой как «NoScript».

Мой клиент не может ввести вкладку, новую строку, или другой символ, похожий на пробел.

Ввод на 1 строке, многострочный не имеет значения.

Я допускаю пробелы внутри ввода, но не в начале или в конце.

Примеры того, что должно работать:

«lorem ipsum»

«lorem ipsum dolor»

Примеры того, что должно потерпеть неудачу:

«lorem ipsum»

«ab c»

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

Некоторые не удалось Регулярные выражения, которые я придумал, пока использую g regexr.com :

^(?<=[^ ]+).+(?=[^ ]+)$

^(?<! +)[ \w]+(?! +)$

^(?<! +)[^ ]+(?! +)$

^ {0}.+ {0}$

^([^ ]*).+([^ ]*)$

^\S*$

Ответы [ 4 ]

1 голос
/ 16 марта 2020

Вы тоже можете попробовать это (заглавные буквы S).

[code] ^\S(.*\S)?$ [/code]

1 голос
/ 16 марта 2020

const exp2 = /^\w+.*\w+$/
console.log(exp2.test("lorem ipsum")); // true
console.log(exp2.test("lorem ipsum dolor")); // true
console.log(exp2.test(" lorem ipsum ")); // false
console.log(exp2.test("abc    ")); // false

// or the opposite:

// (?: ) - non-capturing group
// ^ - start of string
// \s+ - one or more whitespace characters
// .+ - any sequence of characters
// | - OR
// .+ - any sequence of characters
// \s+ - one or more whitespace characters
// $ - end of string
const exp = /(?:^\s+.+|.+\s+$)/;

console.log(exp.test("lorem ipsum")); // false
console.log(exp.test("lorem ipsum dolor")); // false
console.log(exp.test(" lorem ipsum ")); // true
console.log(exp.test("abc    ")); // true
1 голос
/ 16 марта 2020

Этот шаблон может решить вашу проблему:

^[^ ](.*?)[^ ]$

<form>
<input pattern="^[^ ](.*?)[^ ]$" required>
</form>
0 голосов
/ 16 марта 2020

Почему бы вам не использовать trim() в начале и конце входного значения?

Источник: trim ()

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