为javascript创建正则表达式


Creating regex for javascript

我热衷于使用[^'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确认可能存在匹配相同代码点的问题。