试图使我的JS正则表达式匹配多个unicode字符集工作

时间:2015-12-18 15:40:43

标签: javascript regex unicode

This regex匹配,但我想将其修改为有点不同:

^[\u0000-\uFFFF]+@[\u0000-\uFFFF]+\.[\u0000-\uFFFF]+$

我想让它稍微限制一些(我不想在第一个@符号之前支持多个@符号,而且我还想学习如何能够有选择地支持不同的Unicode字符范围< /强>)。

@符号is 0x0040,所以我想过滤掉它(最后是其他字符范围)。例如,我已尝试this过滤掉0x0040,但它不再匹配:

^[\u0000-\u0039\u0041-\uFFFF]+@[\u0000-\uFFFF]+\.[\u0000-\uFFFF]+$

我确信我的正则表达式在某处,所以有人可以告诉我如何在第一个@符号之前制作仅支持\u0000-\u0039\u0041-\uFFFF之间字符的正则表达式吗?

1 个答案:

答案 0 :(得分:1)

问题在于,如果第一个\u0040之前包含代码为@的字符,则您不希望它与匹配匹配,但您编写的是第一个“一个”子句为[\u0000-\u0039\u0041-\uFFFF],表示:

  

我不希望它与具有以下代码之一的角色匹配:\u003A\u003B,   \u003C\u003D\u003E\u003F \u0040

基本上,您错过了十六进制系统中\u0040\u0039之间不仅有\u0041,还有其他数字。

使用@ RohitJain建议的correct regex是:

^[\u0000-\u003F\u0041-\uFFFF]+@[\u0000-\uFFFF]+\.[\u0000-\uFFFF]+$