为什么 jQuery 插件 Globalize 可以识别英语语言环境 (en-CA) 中的 9,999.99 而不能识别法语本地环境中的 9 999,99?

Why does the jQuery plugin Globalize reconize 9,999.99 in English local (en-CA) but not 9 999,99 in French local?

为什么 Globalize 9,999.99 在英语本地 (en-CA) 而不是 9 999,99 在法语本地 (fr-CA) 中。 space 是否导致了这种情况下的问题?

当我调用 numberParser 方法时会发生这种情况。如果我输入 9 999,99 则返回 NaN,但应该接受,因为格式化程序 returns that.

开箱即用的简短回答:因为当前的 Globalize 缺少名为 "Loose Matching" https://github.com/jquery/globalize/issues/292.

的解析器功能

简短的具体答案:因为 space 和 no-break space 是两个不同的字符。 fr-CA 分组分隔符的 "space" 不是常规的 space(字节码 32 = 十六进制 20),而是一个不间断的 space(字节码 160 = 十六进制 A0)。尝试 "sanitizing" 使用 input.replace( "\x20", "\xa0" ) 输入,然后再将其作为解决方法提供给解析器。

您可以在 https://github.com/jquery/globalize/issues/288

找到详细信息

希望对您有所帮助:)