我使用javascript和正则表达式扫描特定单词的句子(' schiz')然后返回匹配以及我查询的单词前后的5个单词。
但是,我似乎遇到了一个奇怪的情况,那就是"新的Regexp()"对象的行为与仅使用普通正则表达式相同。
在以下代码中,如果我使用:
reg = /([^\s]+\s){0,5}schiz([^\s]+\s){0,5}/g
然后它按预期返回,但由于我需要查询字作为变量,我需要使用" new regexp()"创建我的正则表达式。
reg = RegExp("([^\s]+\s){0,5}"+query+"([^\s]+\s){0,5}","g");
如果查询是" schiz",没有给出相同的结果,有人可以解释为什么会这样吗? 以下是整个代码段:
var matchItem = "<p><strong>Indications</strong></p> <p>- Used to treat "resistant schizophrenia" (resistant meaning pt has tried 2 other antipsychotics to little effect)</p> <p>- Better for refractory schizophrenia than chlorpromazine</p>";
var query = "schiz";
var reg = RegExp("([^\s]+\s){0,5}"+query+"([^\s]+\s){0,5}","g");
//reg = /([^\s]+\s){0,5}schiz([^\s]+\s){0,5}/g
var ms = ("" + matchItem).match(reg);
if(ms!=null){
ms = ms.join("...");
}
return ms;
答案 0 :(得分:4)
\
是字符串文字中的特殊字符,您必须将其转义
"([^\\s]+\\s){0,5}"+query+"([^\\s]+\\s){0,5}"