该类库是jehna/VerbalExpressions的php版本。
这货的竟然通过链式方法把正则给语义化了。。。我表示很愤慨啊。。。
安装
代码如下加入composer.json
{
"require": {
...,
"markwilson/VerbalExpressionsPhp": "dev-master"
}
}
使用
代码如下require_once "vendor/autoload.php";
use MarkWilson\VerbalExpression;
use MarkWilson\VerbalExpression\Matcher;
// 初始化VerbalExpression实例
$verbalExpression = new VerbalExpression();
// URL地址匹配
$verbalExpression->startOfLine()
->then("http")
->maybe("s")
->then("://")
->maybe("www.")
->anythingBut(" ")
->endOfLine();
// 编译表达式 - 返回: ^(http)(s)?(\:\/\/)(www\.)?([^\ ]*)$
$verbalExpression->compile();
// 执行匹配
preg_match($verbalExpression, "http://www.111cn.net"); // 返回 1
// 或
$matcher = new Matcher();
$matcher->isMatch($verbalExpression, "http://www.google.com"); // 返回 true
嵌套表达式
代码如下$innerExpression = new VerbalExpression();
$innerExpression->word();
$outerExpression = new VerbalExpression();
$outerExpression->startOfLine()
->find($innerExpression)
->then($innerExpression)
->endOfLine();
// 返回 ^(\w+)(\w+)$
$outerExpression->compile();
禁用子模式捕获
默认情况下,子匹配规则可以被获取,并返回匹配的数组。
代码如下// 禁用获取子匹配规则
$verbalExpression->disableSubPatternCapture()->word(); // (?:\w+)
// 或
$verbalExpression->word(false); // (?:\w+)
这样做只会影响后续增加的表达式;任何已经添加的匹配规则不会受到影响。这里允许禁用和启用组。
代码如下
// 相当于 (\w+)(?:\w+)(?:\w+)(\w+)
$verbalExpression->word()
->disableSubPatternCapture()
->word()
->word()
->enableSubPatternCapture()
->word();
【正则表达式测试工具】正则表达式 VerbalExpressionsPhp使用例子
http://m.bbyears.com/aspjiaocheng/53145.html
推荐访问:正则表达式在线测试 正则表达式语法 正则表达式生成器 正则表达式匹配任意字符 正则表达式判断是否为数字 正则表达式测试