为javascript创建正则表达式

时间:2015-09-02 21:08:07

标签: javascript php regex

我热衷于同时使用[^\u0000-\u007F]+^[A-Za-z0-9._-](?:[A-Za-z0-9._ -]*[A-Za-z0-9._-])?$作为一个正则表达式,但它太复杂了,我无法让它工作?任何想法如何整合?

我想使用JavaScript版本进行客户端验证,使用Php版本进行服务器端验证。

1 个答案:

答案 0 :(得分:2)

我建议使用[\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确认匹配相同代码点可能存在问题。