今天在写一个 Symfony 的路由匹配规则,查看文档的时候发现有一个 requirements 参数,可以对自定义的变量匹配正则表达式。用它匹配特定的字符串很容易,比如 requirements: { id: \d+ } 表示匹配一个或多个数字形式的 id,但我的要求是排除某些字符串之后的匹配,这个我就不知道怎么做了。
上网找了很多,最后还是 Google 帮我找到了想要的结果。
原文在这里:
http://www.cnblogs.com/deerchao/archive/2007/02/15/651411.html
deerchao的blog,文章详细叙述了作者的试验过程,很有意义,后面的评论也很有价值,最后的正则就是回复评论的人提供的,在这里我也顺便感谢一下!
简单说来,目标:当字符串中不包含 google 和 leakon 的时候,匹配字符串。
正则就是 \b((?!google|leakon)\w)+\b。
这里可能看得不是很清楚,我写了个 wiki,里面还有几个测试的例子,请大家看看:
http://wiki.leakon.com/RegularExpressionTips
这里是一个教程:
http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm