【发布时间】:2012-10-23 12:56:04
【问题描述】:
基本上,我需要检查一个 utf-16 字符串是否不包含这些字符 /:*?|+。 除此之外,它可以包含从英语到拉丁语的任何字符。
对于普通的 ASCII 字符串,我们会写一个像 ^[^\/:?|+]$ 这样的 RegEx 对于 UTF-16 格式的字符串,此表达式有何变化?
我们可以在 RegEx 中使用 ascii 字符来表示这个表达式吗? 或者我们应该有等效的 unicode 代码点来匹配任何字符?
【问题讨论】:
-
如果你尝试会发生什么?您使用哪种语言? And do some reading here.
-
什么编程语言? Unicode 的处理差异很大。不过,它应该只适用于大多数情况。
-
我已经在 JavaScript 中尝试了上述表达式,并使用不同的自然语言 (en,jp, tw) 字符串进行了测试。似乎通过它们(不匹配)好的,并在出现任何这些特殊字符时阻止(匹配)。但想知道这是否是正确的方法。我需要这个表达式用于 JavScript、C++ 和 XML(xsd 验证)。棘手的部分是 xsd,无法指定 unicode 代码点(即 \u+002F 等),所以如果上面的 ascii 表达式有效,那就太好了。只是想确认我没有遗漏一些关于 utf-16 字符串应该如何被 RegExed 的细节。