在PHP中将UTF字符与preg_match匹配:(*UTF8)适用于Windows但不适用于Linux

Sco*_*ott 6 php regex unicode

我有一个简单的正则表达式来检查用户名:

preg_match('/(*UTF8)^[[:alnum:]]([[:alnum:]]|[ _.-])+$/i', $username);
Run Code Online (Sandbox Code Playgroud)

在本地测试(使用WAMP的Windows 7)中,这将允许使用UTF字符的用户名(例如é或ñ).但是,当我在实际托管该站点的服务器上进行测试时,我收到以下警告:

警告:preg_match()[function.preg-match]:编译失败:(*VERB)在第12行/home/sites/vgmusic.com/test/Core/Impl/FormElementValidator.php中的偏移量5处无法识别

我也在本地Ubuntu安装上试过这个并得到同样的错误.事实上,我只在我的本地开发环境中看到过这项工作.有没有办法允许适用于所有操作系统的特殊字符?

Gum*_*mbo 15

通过Unicode字符属性描述字符来尝试:

preg_match('/^\p{L}[\p{L} _.-]+$/u', $username)
Run Code Online (Sandbox Code Playgroud)