Я очень новичок в php. Мне нужно проверить, содержит ли данная строка символы из заданного набора {a, b, c}
. Итак, я пытаюсь использовать регулярные выражения. "(abc)+"
должен сделать трюк.
Однако, глядя на записи руководства для preg_match
и связанных с ними функций, я заметил, что эти функции выполняют подстроку, вместо того, чтобы сопоставлять всю строку с правилом регулярного выражения.
Я уверен, что есть простой способ сделать это. В принципе, мне нужен двоичный ответ, соответствует ли вся строка правилу. Могли бы вы, ребята, помочь мне?
Благодаря!
Вы можете создать свой класс символов, используя квадратные скобки. Таким образом, [abc]
будет соответствовать любому из символов внутри класса (скобки).
Чтобы получить серию из них, вам нужен квантификатор. Вы уже использовали +
что означает один или несколько. Если вы также хотите разрешить пустую строку, вы можете использовать значение *
означающее ноль или более.
Чтобы убедиться, что вы проверяете полную строку, вам нужны якоря. ^
будет соответствовать началу строки и $
концу строки.
^[abc]+$
Это регулярное выражение будет соответствовать, если полная строка состоит только из abc
и имеет хотя бы один символ.
Вы можете тестировать регулярные выражения онлайн, например, в Regexr. Здесь вы можете увидеть это регулярное выражение и, конечно, изменить его.
Вместо того, чтобы сопоставлять всю строку с вашими желаемыми символами, вы можете просто попытаться сопоставить любые другие символы, если есть хотя бы одно совпадение, тогда строка не подчиняется вашему правилу.
Просто используйте что-то вроде этого:
[^abc]