通过Regex接受Unicode字符和下划线


Accept Unicode Characters along with Underscore via Regex

if(preg_match('@^([^'W_]*'s){0,3}[^'W_]*$@', $_POST['txt_username_reg'])) 
. . .

上面这行在PHP中使用。

'@^([^'W_]*'s){0,3}[^'W_]*$@'

正则表达式允许"英文字符+数字+最多3个空格"。

如何允许以下内容:

  • 4下划线显示最大值&Unicode字符(只允许没有特殊字符-丢弃括号内的请求)。

'W将匹配标准ASCII英文字符,我之前对此做过研究,直到现在才找到解决方案。

我通常建议匹配单词的分隔符(或边界),并禁止任何不需要的字符。

尽管有不同的方法可用,查看这些链接以获取更多信息。

  1. http://www.regular-expressions.info/unicode.html
  2. http://www.regular-expressions.info/refunicode.html
  3. http://www.regular-expressions.info/wordboundaries.html

'p{L}匹配任何Unicode字母。所以

if(preg_match('/^(?:'p{L}*_){1,4}'p{L}*$/u', $_POST['txt_username_reg']))

实现您的需求。但是,目前这些要求允许将_作为密码,因此您可能需要重新考虑这些。