我正在努力使正则表达式工作,但现在我开始进入圈子。 这个正则表达式将在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}的原因
答案 0 :(得分:0)
适用于asdбв-37.html
的模式不允许使用句点。尝试将它们添加到:
^[a-zA-Z\p{Cyrillic}0-9\s.-]+$
[另外,如果它位于字符类的结尾或开头,则不需要转义-
以将其含义更改为文字。]