JavaScript Regex,查找报价之外的所有文本
JavaScript Regex, find all text OUTSIDE of quotations
要澄清的是,我对正则表达式绝对不在行。我已经在这里找到了一些这样的例子,但我根本不知道如何实现它。
我正在为一个客户用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字符串(/List-Members/g),以排除搜索本身中的引号,而不是像我看到的示例那样事后考虑
例如:
<option value="List Members">List Members</option>
目前成为
<option value="Listes des membres">Listes des membres</option>
我希望它成为
<option value="List Members">Listes des membres</option>
不包括用引号括起来的字符串。
同样,我知道regex对于操作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!
在这里,我们在开始时进行负向后检查,在结束时进行负向前检查。不幸的是,JavaScript正则表达式引擎不支持lookbacking语法,因此只能实现表达式的lookbacking部分:
replace(/List Members(?!'|")/, 'Listes des membres')`
这将排除所有以撇号或引号结束的字符串(它根本不会检查开头的引号)。
是的,regex对于操作HTML来说确实是一个糟糕的选择:)
相关文章:
- Regex有助于突出显示html中匹配文本的角度过滤器
- jQuery regex从文本链接-添加不需要的域到链接
- 如何使用JavaScript Regex替换字符串中双引号之间的文本
- 使用regex从css文件中获取所有类(以文本形式)
- 文本区域angular的regex验证
- 如何使用RegEx转换文本中的表情符号
- jQuery:如何将RegEx匹配的纯文本包装在锚标记中
- Regex Groups-选择电子邮件地址前的文本
- 在javascript中使用regex只选择标记之间的文本
- regex替换元素文本
- 为什么RegEx输出转义文本而不是HTML
- 用JavaScript和Regex校对文本
- Javascript Regex exec 在向搜索文本添加属性/引号后冻结
- Javascript Regex - 只影响非 html 代码?(即文本)
- 使用 jQuery/JavaScript 使用 Regex 解析文本
- 文本框 (Asp.net) 值,具有 3 个小数位,由 Javascript - Regex 处理
- Javascript Regex 来匹配有界文本
- Javascript Regex?或其他方法来验证正确的文本输入
- Javascript/REGEX:删除字符串中以特定字母开头的特定文本(单词),单词之间用空格分隔
- 选择某些字符之间的文本regex