Mal*_*lte 4 javascript localization
如何检测字符串中的非罗马字符?请注意,这并不像对 AZ 和 0-9 范围之外的所有字符进行分类那么简单。罗马字符有很多变体,例如德语 \xc3\xa4、\xc3\xb6、\xc3\xbc - 它们仍然是罗马字符,另一方面,“\xe4\xb8\xad\xe6\x96\x87”,显然不是罗马文字。
\nJavaScript 本身就是 Unicode,各种脚本的字符范围在以下位置都有详细记录:http://www.unicode.org/charts/中有详细记录。
\n\n您将看到有几个与拉丁(罗马)脚本相对应的块。其中最常见的是高位 ASCII 范围,称为 Latin-1 补充,范围为 0080\xe2\x80\x9300FF。这将包括您提到的德语字符。
\n\nJavaScript 让我们可以使用正则表达式很好地测试 Unicode 范围。因此,您可以按照以下示例检测多个字符串中的 Latin 1 补充字符:
\n\nvar en = \'Coffee\',\n fr = \'Caf\xc3\xa9\',\n el = \'\xce\x9a\xce\xb1\xcf\x86\xce\xad\xcf\x82\';\n\nconsole.log( en.replace( /[\\u0080-\\u00FF]/g, \'*\') );\nconsole.log( fr.replace( /[\\u0080-\\u00FF]/g, \'*\') );\nconsole.log( el.replace( /[\\u0080-\\u00FF]/g, \'*\') );\nRun Code Online (Sandbox Code Playgroud)\n\n这将打印出:
\n\nCoffee\nCaf*\n\xce\x9a\xce\xb1\xcf\x86\xce\xad\xcf\x82\nRun Code Online (Sandbox Code Playgroud)\n\n因为根据我们的字符范围,只有重音符号与\xc3\xa9拉丁补充范围相匹配(因此它被替换为*)
因此,为了更好地回答您的问题,要检测“非罗马”字符,您可以执行以下操作:
\n\nvar str = \'a \xc3\xa4 \xc3\xb6 \xc3\xbc \xe4\xb8\xad \xe6\x96\x87\',\n reg = /[^\\u0000-\\u024F\\u1E00-\\u1EFF\\u2C60-\\u2C7F\\uA720-\\uA7FF]/g;\n\nconsole.log( str.replace( reg, \'?\') );\nRun Code Online (Sandbox Code Playgroud)\n\n这会显示:
\n\na \xc3\xa4 \xc3\xb6 \xc3\xbc ? ?\nRun Code Online (Sandbox Code Playgroud)\n\n您可以使用这些范围来执行您特别需要的任何操作。我组装了这个粗糙的工具,用于从 unicode 块构建正则表达式,但我很确定那里有更好的资源,
\n| 归档时间: |
|
| 查看次数: |
1740 次 |
| 最近记录: |