正则表达式unicode - 路由codeigniter

时间:2013-09-10 11:25:05

标签: php regex codeigniter

我正在努力使正则表达式工作,但现在我开始进入圈子。 这个正则表达式将在codeigniter中用于路由目的,例如:

$route['([\p{Ll}\p{Cyrillic}0-9\s\-]+)-(\d+).html'] = "blog/$2"; 

我有一个符合我需要的正则表达式:

$pattern  = "/^[\p{Ll}0-9\s\-]+$/u";

但出于某种原因,它不想在下面的模式中工作

$str="asdбв-37.html";

$pattern  = "#^([\p{Ll}\p{Cyrillic}0-9\s\-]+)-(\d+).html#";

$result = (bool) preg_match($pattern, $str);
if($result)
    echo "$str is composed of Cyrillic and alphanumeric characters\n";

我的最终目标是检查任何语言的任何字符都是用小写字母书写的,这就是我使用\ p {Ll}的原因

1 个答案:

答案 0 :(得分:0)

适用于asdбв-37.html的模式不允许使用句点。尝试将它们添加到:

^[a-zA-Z\p{Cyrillic}0-9\s.-]+$

[另外,如果它位于字符类的结尾或开头,则不需要转义-以将其含义更改为文字。]