麻烦正则表达式

时间:2014-12-05 15:18:00

标签: php regex

我的正则表达式出现问题。 我在法国网站工作,我需要使用正则表达式,以便在我的某个领域中使用在线字母(有些带有重音符号)。

这就是我所做的。

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

“test”返回FALSE

但“tést”返回TRUE!

请帮忙!

如果$ prenom设置为'tést',结果为false,但我认为它是假的。怎么样?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

如果您只想处理法语信件:

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