Ақпаратты шығару үшін менің тұрақты өрнекті қалай алуға болады, тек тексеру

Менде zip/пошта индексі бар-жоғын тексеру үшін тұрақты өрнек бар. Бірақ мен оны нақты мекен-жайдан (немесе мүмкіндігінше кез келген жолдан) шығара аламын деп едім.

Міне, ағымдағы тұрақты өрнегім:

/^((\d{5}-\d{4})|(\d{5})|([a-zA-Z]\d[a-zA-Z]\s\d[a-zA-Z]\d)|([a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d))$/

Қажет болған жағдайда функцияны шешуге дайынмын (мен PHP-мен тексеремін), бірақ мүмкіндігінше, regexp-ны жұмыс істеуді қалаймын.

1

3 жауаптар

PHP топтарды () ішіне алапты preg_match() :

$matches = array();
$pattern = "/^((\d{5}-\d{4})|(\d{5})|([a-zA-Z]\d[a-zA-Z]\s\d[a-zA-Z]\d)|([a-zA-Z]\d[a-zA-Z]\d[a-zA-Z]\d))$/";
preg_match($pattern, $your_source, $matches);
print_r($matches);
2
қосылды
Иә, мен оны білетінмін. Бірақ, бұл үлкен тізбектегі regexp-дан үзінді алуға мүмкіндік бермейді; regexp ішіндегі айнымалылар ғана
қосылды автор Martin, көзі

preg_match, which I assume you're already using when you're checking a string against your regular expression, also gives you back the actual text that matched your pattern.

preg_match($regex, $input, $matches);
echo $matches[0];

Үшінші аргумент regex-ке кіруге қарсы әрекет ету нәтижелерімен толтырылады. $ сәйкес [0] сәйкесінше бүкіл үлгіге сәйкес келетін мәтін бар, ал жоғары индекстерде субпатерлерді (жақшадағы суреттегі бөліктерді) басып алуға сәйкес келетін мәтін бар.

Алайда, сіздің жағдайыңызда, сіз өзіңіздің үлгіні ^ және кіріс соңында $ таңбаларымен қоса қостыңыз, бұл кез келген сәйкестік бүкіл кіріс жолы (немесе толық сызықтағы толық жол). Үлкенірек жолдан пошта индексін алу үшін осы үлгіні пайдаланбас бұрын ^ және $ құтылу керек.

2
қосылды
Өте жақсы! Сіз дұрыс, мен preg_match() пайдаланып, үшінші параметрдің арқасында айнымалы мәндерді жиымға топтастырдық. Бірақ ^ және $ туралы ақпарат маған қажет
қосылды автор Martin, көзі

Толық адреспен жұмыс істегендіктен, неліктен адресті дұрыс шығарып, тексеріп, оның құрамдас бөліктерін (соның ішінде толық ZIP кодын) талдауға мүмкіндік беретін қызметке сүйеніп, жақсы жауап бере аласыз? Бұл, әрине, кез келген болжамды жойып жібереді. Төменде келтірілген скриншот SmartyStreets арқылы әртүрлі мәтіндердің мекенжайларын аша алатын құралды көрсетеді. Толық ашылу мүддесінде, мен SmartyStreets сайтындағы бағдарламалық жасақтама әзірлеушімін.

https://smartystreets.com/account/extract

LiveAddress extraction

0
қосылды