在Javascript中检查字符是否为任何书面语言元音的最佳方法

时间:2014-05-01 14:55:23

标签: javascript regex multilingual

我已经检查了其他答案,他们只满足元音'aeiouy',是否可以轻松检查任何和所有元音 - 包括其他字母表,例如'ü'德语中的元音?

var easy = 'a';
var hard = 'ü';
var etc = 'ö';
var andSoOn = 'あ';

如果这是一个只是创建一个循环并检查它的问题,就像在这个问题的选定答案How do I check for vowels in JavaScript?中那样,是否有一个已知元音的列表?

4 个答案:

答案 0 :(得分:1)

与尝试构建大型符号列表不同的方法是处理语音表示。 此表示中的元音是这些Unicode代码点:Unicode code points for phonetic vowels

当然,这会将负担转移到为每种语言寻找合适的语音翻译。

Chinese vowel diagram应该让您了解您的任务有多么庞大。

答案 1 :(得分:0)

只需将所需字符添加到字符类:

[aeiouüöあ]+

答案 2 :(得分:0)

使用正则表达式测试一系列元音的字符串

var patt = /[üaö]/ //all values
var match = patt.test('ddddüdddd'); //string to match against, returns true or false
alert(match); //will return true because of the german vowel

答案 3 :(得分:0)

  

是否可以轻松检查任何元音和所有元音?

     

是否有已知的元音列表?

如果您想要准确,那就不是。请查看维基百科中的the definition of a written vowel

  

在编写基于拉丁字母的系统时,字母A,E,I,O,U,有时Y都用于表示元音。然而,并非所有这些字母都代表所有语言中的元音,或者甚至在一种语言中始终如一(其中一些,尤其是W和Y,也用于表示近似值)。此外,元音可能由通常为辅音保留的字母或字母组合表示,特别是一个字母同时代表几个声音,反之亦然;英语中的例子包括“大腿”中的igh和“x射线”中的x。此外,拉丁字母的扩展名有独立的元音字母,如Ä,Ö,Ü,Å,Æ和Ø。

     

...

     

其他语言以类似方式应对拉丁元音字母数量的限制。许多语言广泛使用字母组合来表示各种声音。其他语言使用带有修改的元音字母,例如斯堪的纳维亚语和北欧语言中的Ä,或者将变音符号(如变音符号)添加到元音以表示各种可能的元音。有些语言还通过其他方式修改标准拉丁元音来构建额外的元音字母,例如某些斯堪的纳维亚语言中的æ或ø。

     

...

     

用于编写闪族语言的字母表,例如希伯来语字母和阿拉伯字母,通常不标记所有元音,因为它们在识别单词时经常是不必要的。

总之,您需要首先识别语言,然后您需要一组用该语言的元音规则,然后您需要一系列规则的例外。