Javascript 如何检测JS中的非罗马字符?

Javascript 如何检测JS中的非罗马字符?,javascript,localization,Javascript,Localization,如何检测字符串中的非罗马字符?请注意,这并不像对范围A-Z和0-9之外的所有字符进行分类那样简单。罗马文字有很多变体,比如德语的“a,ö,ü”,它们仍然是罗马文字。”中文" 另一方面,它显然不是罗马脚本。JavaScript是本机Unicode,各种脚本的字符范围在 您将看到有几个块对应于拉丁(罗马)脚本。其中最常见的是高ASCII范围,即0080–00FF范围内的拉丁-1补充。这将包括您提到的德语字符 JavaScript允许我们使用正则表达式很好地测试Unicode范围。因此,您可以检测多个

如何检测字符串中的非罗马字符?请注意,这并不像对范围A-Z和0-9之外的所有字符进行分类那样简单。罗马文字有很多变体,比如德语的“a,ö,ü”,它们仍然是罗马文字。”中文" 另一方面,它显然不是罗马脚本。

JavaScript是本机Unicode,各种脚本的字符范围在

您将看到有几个块对应于拉丁(罗马)脚本。其中最常见的是高ASCII范围,即0080–00FF范围内的拉丁-1补充。这将包括您提到的德语字符

JavaScript允许我们使用正则表达式很好地测试Unicode范围。因此,您可以检测多个字符串中的拉丁1补码字符,如下例所示:

var en = 'Coffee',
    fr = 'Café',
    el = 'Καφές';

console.log( en.replace( /[\u0080-\u00FF]/g, '*') );
console.log( fr.replace( /[\u0080-\u00FF]/g, '*') );
console.log( el.replace( /[\u0080-\u00FF]/g, '*') );
这将打印出:

Coffee
Caf*
Καφές
因为根据我们的字符范围,只有重音的
é
与拉丁补语范围匹配(因此它被替换为
*

因此,为了更好地回答您的问题,要检测“非罗马”字符,您可以执行以下操作:

var str = 'a ä ö ü 中 文',
    reg = /[^\u0000-\u024F\u1E00-\u1EFF\u2C60-\u2C7F\uA720-\uA7FF]/g;

console.log( str.replace( reg, '?') );
这将表明:

a ä ö ü ? ?

你可以使用这些范围来做任何你特别需要的事情。我把它们放在一起,用unicode块构建正则表达式,但我很确定还有更好的资源,

欢迎使用stackoverflow。我们为特定问题提供帮助,询问者通常会介绍他迄今为止为解决问题所做的努力在此基础上获得反馈和帮助。