2015-07-09 3 views
1

Я так плохо создаю регулярное выражение, и я борюсь с тем, что я УВЕРЕН, что это простое глупое регулярное выражение.Regex соответствует определенному шаблону

Я использую PHP для этого соответствия. Вот что я имею до сих пор.

Test string: 8848842356063003 
if(!preg_match('/^[0-2]|[7-9]{16}/', $token)) { 
    return array('status' => 'failed', 'message' => "Invalid token", 'token' => ''); 
} 

Регулярное выражение должно соответствовать следующему: Начать с 0-2 или 7-9 и иметь ТОЧНО 16 символов. Что я делаю не так? Потому что я, как спичка:

array(
    0 => 8 
) 

И я должен получить:

array(
    0 => 8848842356063003 
) 

Кстати: Я использую PHP Live Regex, чтобы проверить мои регулярки строки.

Спасибо заранее, Ares D.

+1

Вы должны прочитать о [подмасками] (http://php.net/manual/en/regexp.reference.subpatterns.php) – OIS

ответ

2

Регулярное выражение должны соответствовать этому: Начните с 0-2 или 7-9 и имеет ровно 16 символов

Вы можете поставить стартовые номера в одном классе персонажа и использовать конечный якорь после согласования еще 15 Charaters:

/^[0-27-9].{15}$/ 

Если вы хотите, чтобы соответствовать только цифры, то используйте:

/^[0-27-9]\d{15}$/ 
+1

совершенен! СПАСИБО! Я не знаю, почему я не получаю этот глупый материал регулярного выражения :(Есть ли хорошая книга/учебник, который вы можете порекомендовать? –

+0

Я бы порекомендовал http://www.regular-expressions.info для regex – anubhava

+1

Я знаю, что один ... К сожалению, для меня не так много примеров, поэтому я могу полностью понять. Но спасибо allot :) Вы были более чем полезны. Я ценю это, сэр! –

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