Подтвердить что ты не робот

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

Эй, Я не могу понять, как написать регулярное выражение для моего сайта, я бы хотел, чтобы пользователь вводил список элементов (тегов), разделенных запятой или запятой и пробелом, например "apple, pie, applepie", Можно ли иметь такое регулярное выражение? Спасибо!

EDIT: Я хотел бы regexp для javascript, чтобы проверить ввод, прежде чем пользователь представит форму.

4b9b3361

Ответ 1

То, что вы ищете, обманчиво легко:

[^,]+ 

Это даст вам каждый токен, разделенный запятыми, и будет исключать пустые токены (если пользователь вводит "a, b", вы получите только "a" и "b" ), но он сломается, если они войдут в "a, b".

Если вы хотите с легкостью удалить пробелы с обеих сторон (и исключить только элементы с пробелами), то он становится немного сложнее:

[^,\s][^\,]*[^,\s]*

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

Ответ 2

Предполагая, что слова в вашем списке могут быть буквами от a до z, и вы разрешаете, но не требуете пробела после разделителей запятой, ваш регистр exp будет [A-Z] + (,\S * [A-Z] +) *

Это совпадение "ab" или "ab, de", но не "ab, dc"

Ответ 3

Это может сработать:

([^,]*)(, ?([^,]*))*

Ответ 4

Здесь более простое решение:

    console.log("test, , test".match(/[^,(?! )]+/g));

Ответ 5

([^,]*)

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

Ответ 6

Этот поток почти 7 лет и последний раз активен 5 месяцев назад, но я хотел достичь тех же результатов, что и OP, и после прочтения этой темы встретил отличное решение, которое, кажется, хорошо работает

.match(/[^,\s?]+/g)

Вот образ с некоторым примером кода, как я его использую и как он работает

введите описание изображения здесь

Что касается регулярного выражения... Я полагаю, что более точное утверждение должно было бы сказать: "Нацелиться на все, что НЕ является запятой, за которой следует любое (дополнительное) количество пробелов"?

Ответ 7

что-то вроде этого должно работать: ((apple|pie|applepie),\s?)*