Что такое образец для поиска любой строки, которая соответствует этому формату "CEC0000-0000"? - PullRequest
0 голосов
/ 09 ноября 2019

Нули можно увеличивать, но они должны состоять из четырех цифр, поэтому это может быть CEC0152-2005. Конечно, с "-" между ними. Я использовал www.txt2re.com для создания этого паттерна, но он мне не помог.

1 Ответ

1 голос
/ 09 ноября 2019

Может быть,

^[A-Z]{3}[0-9]{4}-[0-9]{4}$

или

^CEC[0-9]{4}-[0-9]{4}$

может работать нормально.

Тест

$re = '/^[A-Z]{3}[0-9]{4}-[0-9]{4}$/m';
$str = 'CEC0152-2005
CEC0152-2019
CEC0152-1999
CEC0152-19991';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches);

Выход

array(3) {
  [0]=>
  array(1) {
    [0]=>
    string(12) "CEC0152-2005"
  }
  [1]=>
  array(1) {
    [0]=>
    string(12) "CEC0152-2019"
  }
  [2]=>
  array(1) {
    [0]=>
    string(12) "CEC0152-1999"
  }
}

Если вы хотите упростить / изменить / изучить выражение, это было объяснено на верхней правой панели regex101.com . Если хотите, вы также можете посмотреть в этой ссылке , как она будет сопоставляться с некоторыми примерами входных данных.


RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here


Если после тире у нас будет год из четырех цифр,

^[A-Z]{3}[0-9]{4}-[12][0-9]{3}$
^CEC[0-9]{4}-[12][0-9]{3}$

тоже может нормально работать, наверное.

Демо 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...