Мне нужно специальное регулярное выражение, и у меня нет опыта в этом, поэтому я обращаюсь к вам, ребята, на этом.
Мне нужно проверить поле заголовка объявлений, чтобы оно не содержало каких-либо специальных символов.
Допускаются только буквы и цифры, а также три шведские буквы å, ä, ö (верхний или нижний регистр).
Помимо вышеизложенного, они также должны быть разрешены:
Попробуй это:
^[\s\da-zA-ZåäöÅÄÖ&()+%/*$€é,.'"-]*$
Сломать:
^
= соответствует началу строки
[...]*
= соответствует любым символам (или диапазонам) внутри скобок один или несколько раз
$
= соответствует концу строки
Обновлено со всеми предложениями из комментариев. Спасибо, парни!
PHP имеет множество функций, которые могут помочь в проверке текста. Вы можете найти их более подходящими, чем прямое регулярное выражение. Рассмотрим strip_tags()
, htmlspecialchars()
, htmlentities()
Кроме того, если вы используете> PHP5.2, вы можете использовать отличные функции Filter , которые были разработаны именно для вашей ситуации.
^[\sa-zA-Z0-9åäö&()+%/*$€é,.'"-]*$
будет соответствовать всем необходимым символам.
В PHP:
if (preg_match('#^[\sa-zA-Z0-9åäö&()+%/*$€é,.\'"-]*$#i', $subject)) { # Successful match } else { # Match attempt failed }
Эй, приятель, это действительно очень просто. Просто замените регулярное выражение на все, что вы не хотите …
В этом примере – я просто говорю, что «этот материал не разрешен»
Более конкретно, он говорит: «Если это не соответствует этому регулярному выражению, замените этот символ пустой строкой.
PHP:
$result = preg_replace('#([^a-zA-Z0-9£()+=%/*$,.])#imx', '', $subject);
если раздел, в котором у вас есть a-zA-Z0-9£()+=%/*$
просто добавьте символ, который вы хотите передать своему регулярному выражению, и разрешите его в сообщении.
Более экспансивный
Эта переменная регулярного выражения содержит все символы с верхним и нижним регистром. Их в формате ASCII, поскольку я не знаю ключа для их написания!
$result = preg_replace('#([^a-zA-Z0-9£()+=%/*$,.\x99\xBC\xBD\xBE\xC0\xC1\xC2\xC3\xC4\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD1\xD2\xD3\xD4\xD5\xD6\xE0\xE1\xE2\xE3\xE4\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF9\xFA\xFB\xFC\xFD])#imx', '', $subject);