0

我正在努力让正则表达式工作,但现在我开始绕圈子了。此正则表达式将在 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} 的原因

4

1 回答 1

0

正在工作但asdбв-37.html不允许使用句点的模式。尝试将它们添加到:

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

-[此外,如果它位于字符类的末尾或开头,您无需转义以将其含义更改为文字。]

于 2013-09-10T11:32:11.420 回答