Регулярное выражение с буквенно-цифровым и нужно проверить длину строки

У меня есть регулярное выражение, которое сравнивает, если строка имеет как буквенные, так и числовые значения. Но мне нужно сравнить, если строка имеет какие-либо специальные символы и длина строки должна быть 6.
мое текущее регулярное выражение

$val = 'A457718';
preg_match('/^[A-Z]|[0-9A-Z]*([0-9][A-Z]|[A-Z][0-9])[0-9A-Z]*$/i', $val)

Но мне нужно сравнить, если есть какие-либо специальные символы и длина строки должна быть 6. Любая помощь будет принята с благодарностью.

-2

Решение

Вам не нужно регулярное выражение для проверки строки длиной 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

1

Другие решения

на длину поставить в конце {0,6} .. это будет ограничивать строку от 0 до 6 символов

0

Шаблон /^[a-zA-Z0-9]{6}$/ будет соответствовать шести буквенно-цифровым символам.

if(preg_match('/^[a-zA-Z0-9]{6}$/', 'A45BBB')){
// Is valid
}
0

Это будет соответствовать любой алфавитно-цифровой строке длиной 6:

\b[a-zA-Z0-9]{6}\b

или включая знак подчеркивания:

\b\w{6}\b

Это следует уточнить:

Но мне нужно сравнить, если есть какие-либо специальные символы

0
По вопросам рекламы [email protected]