可讀性較好的正規表達式:regexpbuilderphp

jopen 9年前發布 | 13K 次閱讀 PHP開發 regexpbuilderphp

PHP 5.3+的可讀性較好的正規表達式。

這是PHP移植至 https://github.com/thebinarysearchtree/regexpbuilderjs

RegExpBuilder整合正則表達式至編程語言,從而使它們易于閱讀和維護。正則表達式使用鏈式方法創建。

Examples
use Gherkins\RegExpBuilderPHP;
$builder = new RegExpBuilder();

Validation
$regExp = $builder
    ->startOfInput()
    ->exactly(4)->digits()
    ->then("_")
    ->exactly(2)->digits()
    ->then("_")
    ->min(3)->max(10)->letters()
    ->then(".")
    ->anyOf(array("png", "jpg", "gif"))
    ->endOfInput()
    ->getRegExp();

//true
$regExp->test("2020_10_hund.jpg");
$regExp->test("2030_11_katze.png");
$regExp->test("4000_99_maus.gif");

//false
$regExp->test("123_00_nein.gif");
$regExp->test("4000_0_nein.pdf");
$regExp->test("201505_nein.jpg");

Search
$regExp = $builder
    ->multiLine()
    ->globalMatch()
    ->min(1)->max(10)->anythingBut(" ")
    ->anyOf(array(".pdf", ".doc"))
    ->getRegExp();

$text = <<<EOF
Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy SomeFile.pdf eirmod tempor invidunt ut labore et dolore
magna aliquyam erat, sed diam voluptua. At vero eos et accusam
et justo duo dolores et ea rebum. doc_04.pdf Stet clita kasd File.doc.
EOF;

$matches = $regExp->exec($text);

//true
($matches[0] === "SomeFile.pdf");
($matches[1] === "doc_04.pdf");
($matches[2] === "File.doc");

項目主頁:http://www.baiduhome.net/lib/view/home/1424833597812

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!