Квадратні дужки, Регулярні вирази, PHP-Spravka
Відкриваюча квадратна дужка оголошує початок символьного класу, що завершується квадратною дужкою, що закриває. Символ ] не має спеціального значення, і у випадку, якщо квадратна дужка, що закриває, необхідна як член символьного класу, вона повинна бути першим символом безпосередньо після відкриває квадратної дужки (якщо використовується метасимвол ^, то безпосередньо після нього), або екрануватися за допомогою зворотного сліша.
Символьний клас відповідає одиночному символу рядка, причому сам символ повинен утримуватися в наборі, що визначається класом. У разі, якщо першим символом опису класу є ^, логіка роботи інвертується: клас відповідає одиночному символу, який міститься в наборі, що визначається класом. Якщо символ ^ необхідний як член класу, його слід поміщати першим символом у описі класу чи необхідно екранувати з допомогою зворотного слеша.
Наприклад, символьний клас [aeiou] відповідає будь-який голосної літери в нижньому регістрі, тоді як [^aeiou] відповідає будь-якому символу, який є голосною буквою нижнього регістру. Слід розуміти, що символ ^ лише зручний інструмент для опису символів, які не використовуються в зіставленні.
У випадку, якщо здійснюється регістронезалежне зіставлення, будь-яка буква символьного класу відповідає як своєму верхньому, так і нижньому регістру. Таким чином, символьний клас [aeiou] відповідає як A, так і a. Аналогічно, клас [^aeiou] відповідає ні A, ні a.
Всередині символьного класу символ перекладу рядка "\n" не має спеціального значення, незалежно від модифікаторів PCRE_DOTALL і PCRE_MULTILINE. Символьні класи, побудовані заперечення, наприклад [^a], відповідають символу перекладу рядка.
Символ мінус – усередині класу використовується для завдання символьного діапазону. Наприклад, [d-m] відповідає будь-якому символу, що знаходиться між d і m, включаючи символи d і m. У разі, якщо - необхідний, як член класу, він повинен перебувати в такій позиції, в якій він не може інтерпретуватися як діапазон (як правило, це перший та останній символ опису класу) або екрануватись за допомогою зворотного слішу.
Неприпустимо використовувати закриваючу квадратну дужку як межу символьного діапазону. Наприклад, шаблон [W-]46] буде інтерпретований як символьний клас, що складається з двох символів ("W" і "-"), за якими слідує рядок "46]", таким чином шаблон буде відповідати рядкам "W46]" або " -46]". Щоб все ж таки використовувати символ ] в описі діапазону, його необхідно екранувати за допомогою зворотного сліша, наприклад шаблон [W-\]46] буде інтерпретований як символьний клас, що складається з символьного діапазону разом з двома наступними символами 4 і 6. Такого ж результату можна досягти використовуючи шістнадцяткову або вісімкову виставу символу ].
Для побудови символьних діапазонів використовується ASCII уявлення символів. Таким чином, прикордонні символи можна задавати безпосередньо в числовому поданні, наприклад, [\000-\037]. У випадку, якщо виконується незалежний пошук, символи, описані в діапазоні, також відповідатимуть символам обох регістрів. Наприклад, діапазони [W-c] і [][\^_`wxyzabc] еквівалентні (у разі реєстронезалежного пошуку). Наприклад, якщо встановлено локаль "fr" (Франція) необхідно використовувати [xc8-xcb] для завдання відповідності ударному E в обох регістрах.
Загальні типи символів \d, \D, \s, \S, \w, і W також можуть використовуватися в символьних класах, додаючипри цьому до класу ті символи, яким відповідають. Наприклад, клас [\dABCDEF] відповідає будь-якій шістнадцятковій цифрі. Символ ^ може використовуватися спільно із загальним типом, взятим у верхньому реєстрі, для зазначення вужчого набору символів. Наприклад, клас [^\W_] відповідає будь-якій букві чи цифрі, але не символу підкреслення.
Усі неалфавітні символи, окрім \, -, ^ (спочатку) і завершального ], не є спеціальними символами, але використання екрануючого слішу перед ними не зашкодить.