正则表达式有问题



我的正则表达式有问题。我在一个法语网站工作,我需要使用正则表达式才能在我的一个字段中拥有在线字母(有些带有口音)。

这就是我所做的。

if( !mb_eregi("^[a-zéèùêëîïôöçñ-]+$", str_replace(" ", "", $prenom)) )

"测试"返回假

但"tést"返回 TRUE!

请帮忙!

如果$prenom设置为"tést",则结果为假,但我希望它是假的。怎么来了?

我会将preg_match与 unicode 修饰符一起使用:

if( !preg_match('/^[p{L}-]+$/u', str_replace(" ", "", $prenom)) )

离 M42 解决方案不远,可以避免使用 str_replace 和否定:

if (preg_match('/[^p{L} -]/u', $prenom)) { ... }

如果您只想处理法语字母:

if (preg_match('/[^a-zæœéèêëàâäôöîïùûüçÿ -]/ui', $prenom)) { ... }

相关内容

最新更新