Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 过滤多种语言的非字母字符_Javascript - Fatal编程技术网

Javascript 过滤多种语言的非字母字符

Javascript 过滤多种语言的非字母字符,javascript,Javascript,我想编写一个正则表达式来删除所有非字母字符,如下所示: björn -> björn Barry's -> barrys Who? -> who Cibé? -> cibé I'd -> id ice-cream -> icecream No!!! -> no [{brackets}] -> brackets ~inv3rse -> invrse 并将所有字符转换为小写版本。我如何为所有语言或至少为使用拉丁语的欧洲语言做到这一点 str.t

我想编写一个正则表达式来删除所有非字母字符,如下所示:

björn -> björn
Barry's -> barrys
Who? -> who
Cibé? -> cibé
I'd -> id
ice-cream -> icecream
No!!! -> no
[{brackets}] -> brackets
~inv3rse -> invrse
并将所有字符转换为小写版本。我如何为所有语言或至少为使用拉丁语的欧洲语言做到这一点

str.toLowerCase().replace(/[^a-z]/gi,'');

这会将所有内容转换为小写,然后将所有非字母字符(a-z)替换为空字符串,基本上删除它们。为了保留某些其他字符(如带有重音符号的e),只需将该符号添加到正则表达式中。

我假设第四个示例不应该有问号,但重音应该在那里吗?@Michelle重音应该在那里,但不是问号,谢谢!可能有助于您匹配重音字符-尝试将
\u00C0-\u017F
添加到您的字符类中(但我还没有验证其中包含的字符)。但这会将“Cibé?”转换为“Cibé”,而不是“Cibé”。@Baz编辑正则表达式以包含您想要的任何其他字符的unicode。@gr3co但这些符号太多了。仅冰岛语、丹麦语、挪威语、爱尔兰语和苏格兰语就包含:手动枚举所有重音字符既麻烦又容易出错,每次Unicode标准添加新的重音字符时都需要修改。它也不包括组合字符。(例如,将上面的锐重音+大写拉丁字母e组合在一起)。它丢弃了组合字符,但保留了E。另一方面,如果它与非字母组合,您希望将其删除。我不确定
\w
是否包含这些外来字符,但您可以尝试一下并告诉我它是否有效:
str.toLowerCase().replace(/[^\w]/gi',)
。基本上,
\w
涵盖了所有“文字字符”(数字、数字)。