RegEx - 查找用引号

时间:2017-03-22 17:36:22

标签: javascript regex match

我有文件,我需要强调一个人被引用。因此,我正在寻找所有被引号括起来的文字......我使用下面的代码,但它只能捕获第一次出现的代码。

var str = 'L\'armée sud-coréenne accuse la Corée du Nord d\'avoir lancé \"plusieurs\" missiles \"balistiques interdits qui ont franchi une distance\" d\'environ 1000 kilomètres avant de tomber au \"large de la côte est du pays communiste.\" '

var reg = new RegExp(/"(.*?)"/);
var matches = str.match(reg);

for (var i = 0; i < matches.length; i++) {
    var s = matches[i];
    str = str.replace(matches[i], '<span style="color:blue">' + matches[i] + '</span>');
    matches[i] = s;
}

1 个答案:

答案 0 :(得分:2)

制作Regex global

  

g修饰符用于执行全局匹配(查找所有匹配项,而不是在第一次匹配后停止)。

var str = 'L\'armée sud-coréenne accuse la Corée du Nord d\'avoir lancé \"plusieurs\" missiles \"balistiques interdits qui ont franchi une distance\" d\'environ 1000 kilomètres avant de tomber au \"large de la côte est du pays communiste.\" '

var reg = new RegExp(/"(.*?)"/g); //notice /g, making the expression global
var matches = str.match(reg);

for (var i = 0; i < matches.length; i++) {
    var s = matches[i];
    str = str.replace(matches[i], '<span style="color:blue">' + matches[i] + '</span>');
    matches[i] = s;
}

document.getElementById("myDiv").innerHTML = str;

使表达式全局保证引号的所有实例都匹配。

JSFiddle:https://jsfiddle.net/zjxjub96/

为了说明@Casimir在评论中所说的,这是一个小例子:

var str = 'L\'armée sud-coréenne accuse la Corée du Nord d\'avoir lancé \"plusieurs\" missiles \"balistiques interdits qui ont franchi une distance\" d\'environ 1000 kilomètres avant de tomber au \"large de la côte est du pays communiste.\" '
str = str.replace(/"(.*?)"/g, '<span style="color:blue">$&</span>')
document.getElementById("myDiv").innerHTML = str;
<div id="myDiv">

</div>

请注意,这种方式更容易,并且不需要for循环。

JSFiddle:https://jsfiddle.net/zjxjub96/1/

相关问题