Javascript 将字符串中的非拉丁字符更改为拉丁字符

Javascript 将字符串中的非拉丁字符更改为拉丁字符,javascript,ruby,regex,Javascript,Ruby,Regex,我试图通过Ruby或Javascript中的正则表达式匹配包含非英语字符的字符串 那么有没有办法用字符串“taglichen”替换字符串“täglichen”? 我知道我可以用以下选项替换非英语字符: /(?i)t[aä]glichen/ 但为此,我需要可能的字符字典,并在搜索词中设置所有字符。也许有一种更有效的方法可以做到这一点?您可以做的一件事是在匹配()之前对字符串进行slagify 如果您不喜欢将-字符作为分隔符,您可以更改它,正如文档所述,现代ruby有一个合法的解决方案,使用 需要

我试图通过Ruby或Javascript中的正则表达式匹配包含非英语字符的字符串

那么有没有办法用字符串“taglichen”替换字符串“täglichen”? 我知道我可以用以下选项替换非英语字符:

/(?i)t[aä]glichen/

但为此,我需要可能的字符字典,并在搜索词中设置所有字符。也许有一种更有效的方法可以做到这一点?

您可以做的一件事是在匹配()之前对字符串进行slagify


如果您不喜欢将
-
字符作为分隔符,您可以更改它,正如文档所述,现代ruby有一个合法的解决方案,使用

需要进行规范化,因为umlaut可能是单个代码点
228
或组合变音符号
[97776]
。选中此项(尝试将粘贴复制到REPL中):


不,没有。甚至不支持内联修改器(仅限Chrome)。你可能想看一下lib。你能识别这个字符串吗?你们到底想实现什么?我想我将使用规范化输入字符串,并始终与数据库中的规范化字符串进行比较。我试图实现搜索,若你们搜索Täglichen,那个么我想在Taglichen数据库中找到(在我并没有特殊字符的数据库中)。最简单的解决方案是比较始终规范化的字符串。thx,我知道如何规范化字符串,我在想有没有可能要求täglichen使用一些正则表达式进行规范化。您必须先对其进行规范化,或者同时匹配
228
[97776]
。我每天都输入umlauts(双关语),但我的键盘上并没有,我相信你们仍然想匹配组合变音符号。
Input: "Ich heiße Fred"
Output: "ich-heisse-fred"
"täglichen".unicode_normalize(:nfd).
            codepoints.
            reject(&128.method(:<)).
            pack('U*')
#⇒ "taglichen"
"täglichen".unicode_normalize(:nfc) =~ /t[aä]glichen/i
#⇒ 0
"ä" == "ä"
#⇒ false