Регулярное выражение для списка элементов, разделенных запятой или запятой и пробелом
Эй,
Я не могу понять, как написать регулярное выражение для моего сайта, я бы хотел, чтобы пользователь вводил список элементов (тегов), разделенных запятой или запятой и пробелом, например "apple, pie, applepie", Можно ли иметь такое регулярное выражение?
Спасибо!
EDIT:
Я хотел бы regexp для javascript, чтобы проверить ввод, прежде чем пользователь представит форму.
Ответы
Ответ 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?)*