PHP preg_match与克罗地亚字符

MeP*_*ePo 3 php regex

我是正则表达式的新手,但是在StackOverflow上进行了一些搜索,我设法得到了我想要的东西(如果2个单词被逗号分隔,那么它返回true并返回false,如果不是这样或单词结束除了我有克罗地亚字符(č,ć,ž,đ,š大写和小写)的问题之外,用逗号但后面没有任何内容.我目前的preg_match样子

 if (preg_match('/^(([a-zA-Z0-9]+\\s*,\\s*)+(\\s*)([a-zA-Z0-9]+))$/', $data)) 
{
   //do stuff

}
Run Code Online (Sandbox Code Playgroud)

但是,这种方法的问题是,如果有也不会返回true ?,?,ž...我知道那是因为[a-zA-Z]不"看"这个字.所以,我的问题是如何编写一个将使用克罗地亚字符返回true的正则表达式.如果可以做到这一点,也可以随意发表评论,因为我想听听你的建议.顺便说一句,我是在regex101.com的帮助下完成的

Wik*_*żew 6

\p{L}速记类和u选项,则可以匹配Unicode字母.

该程序返回FOUND!:

$data = "?dd, ?dd, žddd";
if (preg_match('/^(([\\p{L}0-9]+\\s*,\\s*)+(\\s*)([\\p{L}0-9]+))$/u', $data)) 
{
  echo "<h1>FOUND!</h1>";
}
Run Code Online (Sandbox Code Playgroud)

按照Regular-Expressions.info:

您可以匹配属于"字母"类别的单个字符\p{L}.

另一个专门用于PHP正则表达式的页面:

您应该指定/u为使用正则表达式\x{FFFF},\X\p{L}匹配Unicode字符,字形,属性或脚本.PHP将解释'/regex/u'为UTF-8字符串而不是ASCII字符串.

另外,请参阅preg_match函数文档页面中的一个示例:

对于那些使用preg_match此处搜索unicode正则表达式示例的人 来说:

检查波斯数字 preg_match( "/[^\x{06F0}-\x{06F9}\x]+/u" , '??????????' );