2015-11-23 4 views
1

Как проверить, имеет ли строка определенный шаблон?
XXXX-XXXX-XXXX-XXXX
4-х символов буквенно то минус знак, в 4 раза, как выше структуры.Проверьте, содержит ли строка тот же шаблон

Что я хотел бы сделать, так это то, что я хотел бы проверить, содержит ли строка эту структуру, включая «-».

Я потерян, может ли кто-нибудь указать мне правильное направление?

Пример кода:

$string = "5E34-4512-ABAX-1E3D"; 

if ($pattern contains this structure XXXX-XXXX-XXXX-XXXX) { 
echo 'The pattern is correct.'; 
} 

else { 
echo 'The pattern is invalid.'; 
} 
+0

Должен 'XXXX' быть s в каждой части? Или же '1234-asdf-7890-asg1' также действителен? – Sumurai8

+0

Регулярные выражения - ваш лучший друг. – Calimero

+0

@ Sumurai8 Нет, они могут быть разными, как пример, который вы опубликовали. –

ответ

1

Использование регулярных выражений

<?php 
$subject = "XXXX-XXXX-XXXX-XXXX"; 
$pattern = '/^[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}$/'; 
if(preg_match($pattern, $subject) == 1); 
    echo 'The pattern is correct.'; 
} else { 
    echo 'The pattern is invalid.'; 
} 
?> 

[a-zA-Z0-9] матч один символ

{4} соответствует символу Ровно в 4 раза

\- соответствует сбежавшему дефису

+0

Вам не нужно скрывать дефис в этой позиции;) – fred727

0

использование preg_match:

$ok = preg_match('/^([0-9A-Z]{4}-){3}[0-9A-Z]{4}$/', $string)

И если вы хотите, чтобы рассмотреть символы в нижнем регистре, используйте:

$ok = preg_match('/^([0-9A-Z]{4}-){3}[0-9A-Z]{4}$/i', $string)

+0

Спасибо за ваш ответ! Это была связь между вами и Ashish –

0

С Perl-регулярных выражений :

$string = "5E34-4512-ABAX-1E3D"; 

if (preg_match('/\w{4}-\w{4}-\w{4}-\w{4}/',$string)) { 
    echo 'The pattern is correct.'; 
} 
+0

\ w не очень хорошо, потому что она включает символ подчеркивания. Более того, нет начальных строк (^) и символов конечной строки ($) – fred727

+0

@ fred727, для принятия решения OP. – Calimero

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