2015-07-21 4 views
-2

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

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

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

+0

Обеспечить некоторые примеры Вали и недействительные входы. – anubhava

+0

Что такое 'специальные символы'? Вы хотите, чтобы строка имела длину 6 символов и буквенно-цифровую? Примерный ввод и ожидаемый результат были бы полезными. – chris85

+0

любые символы, отличные от буквенно-цифровых – user3408779

ответ

1

Вам не нужно регулярное выражение для проверки строки длиной 6 символов и только числовой.

$val = 'A457718'; 
if (is_numeric($val) && strlen($val) == 6) { 
    echo 'true'; 
} else { 
    echo 'false'; 
} 

Demo: 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

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

+0

да, я дал {0,6} в конце.preg_match ('/^[AZ] | [0-9A-Z] * ([0-9] [AZ] | [AZ] [0-9]) [0-9A-Z] {0,6} * $/i ', $ val). Но я получаю такую ​​ошибку: preg_match(): Ошибка компиляции: ничего не повторять со смещением 52 – user3408779

0

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

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

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

\b\w{6}\b 

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

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

+0

Нет необходимости в ', 6',' {6} 'означает 6 символов. '\ W' также соответствует' _', поэтому он не просто буквенно-цифровой. – chris85

+0

Спасибо, что заметили это, я обновил ответ. –

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^