#php #regex
#php #регулярное выражение
Вопрос:
Я создаю текстовое поле для добавления тегов, разделенных запятыми. (например, php, jquery, js, ruby on rails) Поле похоже на то, что в stakoverflow, где вы добавляете теги для записей.
Я хочу проверить входные данные, чтобы убедиться, что теги были введены правильно. Это означает, что пользователи могут вводить только буквы, цифры, пробелы и запятые.Я сделал следующее regex_match, но я не совсем уверен, что это правильно.
regex_match[/^[a-z, ] $/i]
Если входные данные содержат что-либо, кроме того, что я добавил в регулярное выражение, я получаю ошибку проверки при отправке формы. Я протестировал, и это работает, когда я помещаю символы типа ' " ;
Это мое первое регулярное выражение, я все делаю правильно? Язык — PHP.
Комментарии:
1. Разве это регулярное выражение не будет соответствовать чему-либо, что содержит запятую?
2. Вы, гм, тестировали это? Придумайте тесты. Они успешны или неудачны? Это звучит так, как будто вы хотите, чтобы мы протестировали для вас.
3. да, я тестировал, кажется, это работает, но это мое первое регулярное выражение. Я просто хочу убедиться, что я все делаю правильно. @Tim, если существует что-либо, кроме цифр, букв, пробелов и запятых, я получаю ошибку проверки.
4. Я не хочу раздражать, поэтому я не буду публиковать «нет» в качестве ответа, поскольку очевидно, что вы не сопоставляете ни цифры (обязательные для чисел), ни запятую. Если вы хотите получить хороший ответ, пожалуйста, убедитесь, что вы очень четко указали, какой тип ввода вы ожидаете, и создайте несколько примеров (например, могут ли пробелы быть где угодно?). Также, пожалуйста, уточните, что вы подразумеваете под тегами, существует более одного типа ‘tag’.
5. На каком языке это? Это не PHP или javascript…
Ответ №1:
Почему бы не использовать str_getcsv
функцию, она преобразует строку CSV в массив, а затем вы можете проверять каждый тег по отдельности с помощью ctype_alnum
функции и отбрасывать искаженные 😉
Вот правильный шаблон регулярного выражения, если он вам действительно нужен:-
'/^[a-z0-9] (, [a-z0-9] )*$/i'
Комментарии:
1. Спасибо! Я не знал, что существует функция для csv!
Ответ №2:
Хорошо, здесь есть несколько проблем:
- В php нет функции с именем «regex_match»
- функция использует (), а не []
- переменные начинаются с $. Внутри [] находится индекс.
Опубликованная вами строка приведет к синтаксической ошибке в PHP. Поскольку вы «протестировали это», это означает, что на самом деле это не тот код, который вы использовали. Пожалуйста, опубликуйте фактический код.
Что касается регулярного выражения, это хорошая первая попытка, но вы забыли цифры:
/^[a-z,0-9 ] $/i
Комментарии:
1. Извините, я использую regex_match[] в codeigniter, где вы добавляете свой шаблон регулярных выражений в []. Спасибо за цифры!