alshahawi / xpressions
一个流畅的 PHP 正则表达式 API。
dev-master
2017-03-02 10:04 UTC
Requires
- php: >=5.6.0
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-09-08 07:14:43 UTC
README
一个流畅的 PHP API 用于正则表达式。
安装
Xpressions 目前尚未准备好投入生产,但您可以通过 composer 安装它:
composer require alshahawi/xpressions:dev-master
示例
创建实例
$matcher = Xpressions::match();
匹配字符串
$matcher = Xpressions::match()->exact('foo'); var_dump($matcher->test('bar')); // -> false var_dump($matcher->test('foo')); // -> true
内联匹配
在某些情况下(如验证),您可能想要匹配行首和行尾的内容,在这种情况下,您可以使用 begin()
和 end()
方法。例如
$matcher = Xpressions::match()->begin()->exact('bar')->end(); var_dump($matcher->test('foo bar')); // -> false var_dump($matcher->test('bar foo')); // -> false var_dump($matcher->test('bar')); // -> true
注意:如果没有使用
begin()
和end()
,上述所有测试都将匹配(返回 true),因为无论匹配的是行首还是行尾,除非指定了行首和行尾(整个文本),否则将返回 true。
匹配可选字符串
$matcher = Xpressions::match()->exact('foo')->maybe('bar')->exact('baz'); var_dump($matcher->test('foo')); // -> false var_dump($matcher->test('foobar')); // -> false var_dump($matcher->test('foobarbaz')); // -> true var_dump($matcher->test('foobaz')); // -> true
匹配字母数字和下划线
$matcher = Xpressions::match()->word(); var_dump($matcher->test('!')); // -> false var_dump($matcher->test('a')); // -> true var_dump($matcher->test('1')); // -> true var_dump($matcher->test('_')); // -> true
您可以使用
words()
匹配一个或多个单词字符。
您可以使用
nonWord()
作为此方法的逆操作。
匹配数字
$matcher = Xpressions::match()->digit(); var_dump($matcher->test('!')); // -> false var_dump($matcher->test('a')); // -> false var_dump($matcher->test('1')); // -> true
您可以使用
digits()
匹配一个或多个数字。
您可以使用
nonDigit()
作为此方法的逆操作。
匹配给定值中的任意一个
$matcher = Xpressions::match()->any('foo', 'bar', 'baz'); var_dump($matcher->test('something')); // -> false var_dump($matcher->test('foo')); // -> true var_dump($matcher->test('bar')); // -> true var_dump($matcher->test('baz')); // -> true
高级示例
匹配电子邮件地址
$matcher = Xpressions::match() ->begin() // match a line start ->oneOrMore(function($xpr) { $xpr->word()->or('.'); }) ->exact('@') ->words() ->oneOrMore(function($xpr) { $xpr->maybe('.') ->word(); }) ->end(); // match a line end var_dump($matcher->test('invalid')); // ->false var_dump($matcher->test('me@example.com')); // ->true
想了解更多高级示例吗?
许多示例将很快被编写和记录,但现在您可以查看 tests/XpressionsTest.php
。