Php 正则表达式的问题

Php 正则表达式的问题,php,regex,Php,Regex,我的正则表达式有问题。 我在一个法语网站工作,我需要使用正则表达式,以便在我的一个字段中有在线信件(有些带有口音) 这就是我所做的 if( !mb_eregi("^[a-zéèùêëîïôöçñ\-]+$", str_replace(" ", "", $prenom)) ) “test”返回FALSE 但是“tést”返回真值 请帮忙 如果$prenom设置为'tést',则结果为false,但我希望它为false。为什么?我会使用preg\u match和unicode修饰符: if( !p

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

这就是我所做的

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

但是“tést”返回真值

请帮忙


如果$prenom设置为'tést',则结果为false,但我希望它为false。为什么?

我会使用preg\u 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)) { ... }

那么你的问题是什么?对于某些输入,你想要的输出是什么?“tést”也应该返回FALSE,因为单词中只有字母,不是吗?为什么返回TRUE?请尝试使用以下内容更新您的问题:
如果$prenom设置为“test”,则结果为false,但我希望它为TRUE。怎么回事?
谢谢你,强尼5!!!您的解决方案非常有效!这不管用。我还认为preg_match是不受欢迎的。@elti69:哪种方式不起作用?您在哪里看到preg_replace被弃用?