JavaScript正则表达式,查找引用之外的所有文本

JavaScript正则表达式,查找引用之外的所有文本,javascript,html,regex,Javascript,Html,Regex,澄清一下,我对正则表达式的理解非常糟糕。我已经在这里找到了一些这样的例子,但我根本不知道如何实现它以供我使用 我正在为一个客户端用JavaScript将英文翻译成法文(相当糟糕),但我遇到了一个问题,它在翻译变量名和选择选项值,这显然破坏了搜索函数和输入函数 我的现行守则: var englishStrings = new Array(); englishStrings[0] = /List Members/g; var frenchStrings = new Array(); frenchS

澄清一下,我对正则表达式的理解非常糟糕。我已经在这里找到了一些这样的例子,但我根本不知道如何实现它以供我使用

我正在为一个客户端用JavaScript将英文翻译成法文(相当糟糕),但我遇到了一个问题,它在翻译变量名和选择选项值,这显然破坏了搜索函数和输入函数

我的现行守则:

var englishStrings = new Array();
englishStrings[0] = /List Members/g;

var frenchStrings = new Array();
frenchStrings[0] = "Listes des membres";

$(document).ready(function() {
    //alert(language);
    if (language == "English" || language == null)
    {
        $("#language_link").text("Voir en français");
        var strNewString = $('body').html();
        strNewString = strNewString.replace(/Nccp/g, 'NCCP');
        strNewString = strNewString.replace(/Actions/g, 'Menu');
        strNewString = strNewString.replace(/Id/g, 'ID');
    }
    else
    {
        $("#language_link").text("View in English");
        var strNewString = $('body').html();
        strNewString = strNewString.replace(/Nccp/g, 'NCCP');
        strNewString = strNewString.replace(/Actions/g, 'Menu');
        strNewString = strNewString.replace(/Id/g, 'ID');
        $.each(englishStrings, function(index, value) {
            strNewString = strNewString.replace(value, frenchStrings[index]);
        });
        strNewString = strNewString.replace('Voir', 'View');
    }
    $('body').html(strNewString);
});
我想更改regex find strings(/List Members/g)以排除搜索本身中的引号,而不是像我看到的示例那样事后考虑。
例:

列出成员
目前成为

<option value="Listes des membres">Listes des membres</option>
Listes des membres
我希望它变成

<option value="List Members">Listes des membres</option>
Listes des membres
不包括由引号包围的字符串


再说一遍,我知道正则表达式在处理HTML方面是一个糟糕的选择,我很遗憾这样做,但我们已经投入了相当多的时间来这样做。

如果我理解正确,您可以尝试使用这样的方法:

replace(/([^"'])List Members([^"'])/g, '$1Listes des membres$2')
(或者,更精确的变体:
replace(/([^“'))List Members\1/g,$1Listes des membres$1')
-将仅排除具有匹配的开头和结尾引号的字符串)

在许多方言中,可以不向替换字符串添加反向引用,如下所示:

replace(/(?<!'|")List Members(?!'|")/, 'Listes des membres') # won't work in JS!
这将排除所有以撇号或引号结尾的字符串(它根本不会检查开头引号)


是的,regex确实是一个处理HTML的糟糕选择:)

对不起,我很好奇,但我回答了你的问题吗?
replace(/(?<!'|")List Members(?!'|")/, 'Listes des membres') # won't work in JS!
replace(/List Members(?!'|")/, 'Listes des membres')`