Я хочу, чтобы preg_match
строку, которая выглядит так (ниже), я пробовал другие методы, но они работают для определенной строки не
firstname
first-name
и, кроме этого, отклонить другую строку
Я попытался это сделать, но не смог это сделать, и я понял, это возможно только с регулярным выражением, и поскольку я ничего не знаю о регулярном выражении, я не могу сделать это через минуту или около того и запустить уязвимый код, есть ли у нас любой другой способ сделать это, если не регулярное выражение
Как насчет:
preg_match('/^\w+-?\w+$/', $string);
Вы можете сопоставить 0 или 1 дефисов с помощью ?
символ:
if( preg_match('/^first-?name$/', $yourString ) ){
// matched.
}
Символы ^
и $
- это начальные и конечные маркеры, добавленные для обеспечения точности строки.
"__"
и "___"
как действительные строки.
Перейдите на страницу https://www.regex101.com/
попробуйте (first[\-]{0,1}name)
работает отлично :-)
PHP-код:
$pattern = '(first[\-]{0,1}name)';
echo preg_match($pattern,'firstname');
echo preg_match($pattern,'first-name');
выходы: 11
- это означает, что true - true