4

在一个针对德国的应用程序中,我正在编写一些网络服务,我必须对用户名、密码等应用一些验证规则。比如字母数字、不支持的特殊字符等。我使用正则表达式来实现这一点,但它失败了,它对英语很好用,但它不支持德语,我该如何解决这个问题。

任何帮助将不胜感激...preg_match("#.*^(?=.{8,20})(?=.*[a-zA-Z])(?=.*[0-9]).*$#", $string)

4

1 回答 1

1

首先,对 UTF-8 使用 'u' 修饰符(您应该将其编码用于国际应用程序)。其次,如果您试图在 [a-zA-Z] 块中允许变音等,您可以使用转义序列添加您想要的特定字符,如下所示:

分别:

preg_match( "/\x{00FC}/u" , 'ü' ); // 1

或在一组中:

preg_match('/^[\x{00DF}\x{00E4}\x{00C4}\x{00F6}\x{00D6}\x{00FC}\x{00DC}]+$/u', 'ßäÄöÖüÜ'); // 1

...或者只使用单词字母匹配\w(注意这也将允许数字和下划线以及其他可以用作单词字母的国际字符)。

preg_match( "/\w/u" , 'ü' ); // 1

(顺便说一句,我不确定你^在表达式中间做什么,没有'm'修饰符。)

于 2012-09-22T09:29:17.497 回答