我热衷于同时使用 [^\u0000-\u007F]+
和 ^[A-Za-z0-9._-](?:[A-Za- z0-9._ -]*[A-Za-z0-9._-])?$
作为一个正则表达式,但它太复杂了,我无法让它工作?有什么想法可以整合两者吗?
我想使用JavaScript版本进行客户端验证,使用Php版本进行服务器端验证。
最佳答案
我建议使用 [\u0080-\uFFFF]
而不是 [^\u0000-\u007F]
来使用 Unicode 表的剩余部分。
在JS中,\w
匹配[A-Za-z0-9_]
,我建议使用
^[\u0080-\uFFFF\w.-](?:[\u0080-\uFFFF\w. -]*[\u0080-\uFFFF\w.-])?$
参见 demo
在 PHP 中,只需使用 \p{L}
with /u
modifier :
$re = '/^[\p{L}0-9_.-](?:[\p{L}0-9_. -]*[\p{L}0-9_.-])?$/u';
^^^^^ ^^^^^ ^^^^^ ^
看起来没有人喜欢 PHP 中的 \uXXXX
。 @nhahtdh 确认匹配相同代码点可能存在问题。
关于javascript - 为 javascript 创建正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32363130/