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

Trying to make my JS regex for matching multiple unicode character sets work

本文关键字:unicode 字符集 正则表达式 我的 JS      更新时间:2023-09-26

这个正则表达式匹配,但我想修改它以使其工作方式有所不同:

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

我想稍微增加一点限制(我不想在第一个@符号之前支持多个@符号,而且,我还想学习如何选择性地支持不同的Unicode字符范围)。

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

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

我确信我的正则表达式在某个地方出错了,所以有人能告诉我如何制作一个只支持第一个@符号之前的'u0000-'u0039'u0041-'uFFFF之间的字符的正则表达式吗?

问题是,如果它在第一个@之前包含代码为'u0040的字符,那么您不希望它只与匹配,而是将您的第一个"one-of"子句写为['u0000-'u0039'u0041-'uFFFF],这意味着:

当它是具有以下代码之一的字符时,我不希望它匹配:'u003A'u003B、,'u003C'u003D'u003E'u003F'u0040

基本上,在十六进制系统中,'u0039'u0041之间不仅有'u0040,还有其他数字。

使用@RohitJain的建议,正确的正则表达式是:

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