这个例子的正则表达式(^[\u0021-\u003F\u0041-\uFFEF]+@[\u0021-\u003F\u0041-\uFFEF]+\.[\u0021-\u003F\u0041-\uFFEF]+$
)可以通过Unicode字符范围来过滤字符,我可以让范围从\u0000
到\uFFFF
,但是Unicode支持超过0xFFFF
的字符。在JavaScript的正则表达式中,我能使用这些以上的范围吗?
这个例子的正则表达式(^[\u0021-\u003F\u0041-\uFFEF]+@[\u0021-\u003F\u0041-\uFFEF]+\.[\u0021-\u003F\u0041-\uFFEF]+$
)可以通过Unicode字符范围来过滤字符,我可以让范围从\u0000
到\uFFFF
,但是Unicode支持超过0xFFFF
的字符。在JavaScript的正则表达式中,我能使用这些以上的范围吗?
为了与ECMAScript 5和旧环境保持向后兼容性,不幸的解决方案是使用代理对:
这篇文章介绍了在JavaScript中处理Unicode字符的一些技巧和注意事项。它涵盖了字符串长度、正则表达式匹配、字符串比较和编码等方面的问题,并提供了一些实用的解决方案。如果你在开发中需要处理Unicode字符,这篇文章会对你有所帮助。>> '\uD83D\uDCA9' '' // U+1F4A9 PILE OF POO
In that case, each escape represents the code point of a surrogate half. Two surrogate halves form a single astral symbol.
ECMAScript 2015引入了RegExp
u
标志,支持更高值的Unicode转义序列:
(/\u{1F4A9}/u).test(""); // true
\u0000\u0000-\uFFFF\uFFFF
示例:https://regex101.com/r/aM1fU5/13 - Alexandru[\ud800-\udbff][\udc00-\udfff]
将起到像匹配所有代码点> 0xFFFF的单个范围的作用。(您的解决方案似乎只能“工作”,因为您没有在任何代码点> 0xFFFF上使用它。) - Janosch