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
之间字符的正则表达式吗?
答案 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]+$