我热衷于使用[^'u0000-'u007F]+
和^[A-Za-z0-9._-](?:[A-Za-z0-9._ -]*[A-Za-z0-9._-])?$
作为一个正则表达式,但它是如此复杂,我只是不能使它工作?有什么办法把两者结合起来吗?
我想使用JavaScript版本的客户端验证和Php版本的服务器端验证。
我建议使用Unicode表的剩余部分与['u0080-'uFFFF]
而不是[^'u0000-'u007F]
。
在JS中,'w
匹配[A-Za-z0-9_]
,我建议使用
^['u0080-'uFFFF'w.-](?:['u0080-'uFFFF'w. -]*['u0080-'uFFFF'w.-])?$
看到演示
在PHP中,只使用'p{L}
和/u
修饰符:
$re = '/^['p{L}0-9_.-](?:['p{L}0-9_. -]*['p{L}0-9_.-])?$/u';
^^^^^ ^^^^^ ^^^^^ ^
看起来没有人喜欢PHP中的'uXXXX
。@nhahtdh确认可能存在匹配相同代码点的问题。