У меня есть регулярное выражение, которое сравнивает, если строка имеет как буквенные, так и числовые значения. Но мне нужно сравнить, если строка имеет какие-либо специальные символы и длина строки должна быть 6.
мое текущее регулярное выражение
$val = 'A457718';
preg_match('/^[A-Z]|[0-9A-Z]*([0-9][A-Z]|[A-Z][0-9])[0-9A-Z]*$/i', $val)
Но мне нужно сравнить, если есть какие-либо специальные символы и длина строки должна быть 6. Любая помощь будет принята с благодарностью.
Вам не нужно регулярное выражение для проверки строки длиной 6 символов и только числовой.
$val = 'A457718';
if (is_numeric($val) && strlen($val) == 6) {
echo 'true';
} else {
echo 'false';
}
Демо-версия: http://sandbox.onlinephpfunctions.com/code/25c426d1bbbfce4a96c8c1ba74cc4a84b66c2435
Функции:
http://php.net/manual/en/function.is-numeric.php
http://php.net/manual/en/function.strlen.php
Если по какой-то причине вам требуется это в регулярных выражениях.
preg_match('~^\d{6}$~', $val);
Демо-версия: https://regex101.com/r/oR9bT4/1
на длину поставить в конце {0,6}
.. это будет ограничивать строку от 0 до 6 символов
Шаблон /^[a-zA-Z0-9]{6}$/
будет соответствовать шести буквенно-цифровым символам.
if(preg_match('/^[a-zA-Z0-9]{6}$/', 'A45BBB')){
// Is valid
}
Это будет соответствовать любой алфавитно-цифровой строке длиной 6:
\b[a-zA-Z0-9]{6}\b
или включая знак подчеркивания:
\b\w{6}\b
Это следует уточнить:
Но мне нужно сравнить, если есть какие-либо специальные символы