用于MongoDB重音搜索的PHP脚本需要翻译成JavaScript

用于MongoDB重音搜索的PHP脚本需要翻译成JavaScript,php,javascript,regex,node.js,mongodb,Php,Javascript,Regex,Node.js,Mongodb,我发现了一个PHP脚本,它允许查找一些重音字符中的文本。我的项目是nodejs+mongodb,所以我尝试翻译JavaScript,但根本无法翻译它。因为我不太懂PHP,所以需要一些帮助来翻译 PHP脚本源代码来自 这是我需要翻译的JavaScript代码。。。任何帮助都将被感谢!谢谢 function accentToRegex(word){ var ACCENT_STRINGS = 'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËẼÌÍÎÏĨÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæç

我发现了一个PHP脚本,它允许查找一些重音字符中的文本。我的项目是nodejs+mongodb,所以我尝试翻译JavaScript,但根本无法翻译它。因为我不太懂PHP,所以需要一些帮助来翻译

PHP脚本源代码来自

这是我需要翻译的JavaScript代码。。。任何帮助都将被感谢!谢谢

function accentToRegex(word){

    var ACCENT_STRINGS = 'ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËẼÌÍÎÏĨÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëẽìíîïĩðñòóôõöøùúûüýÿ';
    var NO_ACCENT_STRINGS = 'SOZsozYYuAAAAAAACEEEEEIIIIIDNOOOOOOUUUUYsaaaaaaaceeeeeiiiiionoooooouuuuyy';

    var from =  (ACCENT_STRINGS).split(decode_utf8(ACCENT_STRINGS));
    var to   = NO_ACCENT_STRINGS.split(NO_ACCENT_STRINGS.toLocaleLowerCase());

    var text = decode_utf8(word);
    var regex = new Array();

    for(value in to)
    {
        if (!regex[value])
        {
            regex[value] = from[value];
        } else {
            regex[value] = value;
        }
    }

    for (rg_key in regex)

    {
//          "$TESTONE $TESTONE".replace( new RegExp("\\$TESTONE","gm"),"foo")
//        text = preg_replace("/[$rg]/", "_{$rg_key}_", $text);
        text = text.replace(new RegExp(/[rg]/), new RegExp(_{rg_key}_)) ;

    }

    foreach (rg in regex)
  {

//        $text = preg_replace("/_{$rg_key}_/", "[$rg]", $text);
      text = text.replace(new RegExp(/[rg]/), new RegExp(_{rg_key}_)) ;

  }

    return encode_utf8(text); //Edited from $text to text

}

function encode_utf8(s) {
    return encodeURIComponent(s);
}

function decode_utf8(s) {
    return decodeURIComponent(s);
}
错误是

这个

应该是

return encode_utf8(text); // no dollar-sign
但我没有超越这一点

JavaScript
RegExp
构造函数需要一个不带分隔符的字符串。分隔符通常为/但表达式试图使用下划线。JS只使用/

new RegExp("hello")
new RegExp("[xy]")    // will look for either the character 'x' or 'y'
new RegExp(yourStringVariable)
new RegExp("[" + someVar + "]")
// .. will look for any of the letters in the variable someVar
以下是使用RegExp的各种方法

JS中的每个语句都有两个独立的单词
(对象中的变量)
。但它也不受欢迎,也没有得到广泛支持

您的第二个foreach还引用了变量
rg\u key
,它在这里没有一个有意义的值


我想还有一些东西需要转换。

我编辑过,但仍然得到关于RegExp的错误。请看截图。刚刚在上面编辑过。谢谢
return encode_utf8(text); // no dollar-sign
new RegExp("hello")
new RegExp("[xy]")    // will look for either the character 'x' or 'y'
new RegExp(yourStringVariable)
new RegExp("[" + someVar + "]")
// .. will look for any of the letters in the variable someVar