it-swarm-ru.tech

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

Привет, Я не могу понять, как написать регулярное выражение для своего веб-сайта, я хотел бы позволить пользователю вводить список элементов (тегов), разделенных запятой или запятой и пробелом, например «Apple» , пирог, яблочный пирог ". Было бы возможно иметь такое регулярное выражение? Спасибо!

Правка: Я хотел бы регулярное выражение для javascript, чтобы проверить ввод, прежде чем пользователь отправит форму.

16
Masiar

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

[^,]+ 

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

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

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

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

26
Bennor McCarthy

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

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

4
David

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

([^,]*)(, ?([^,]*))*
2
Ted Hopp

Вот более простое решение:

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

Он не разбивается на пустые свойства и удаляет пробелы до и после свойств.

1
DerpyNerd
([^,]*)

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

0
luis santos

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

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

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

 enter image description here

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

0
jsdev17