2017-10-13 56 views
0

这是我目前的正则表达式:/[Hh][Ee][Ll][Ll][Oo](?![A-Za-z0-9\-])(?![^<]*>)/g正则表达式:匹配不被其他字母包围的字,只包括在结果字

这是我的匹配测试:

hello helloa ahello <hello> 
^^^^^  !!!!!! 
Should match ^^^^^ only 

我现在的正则表达式也匹配!!!!!。我做了一个正则表达式,看起来像这样:/(?<![A-Za-z0-9\-])[Hh][Ee][Ll][Ll][Oo](?![A-Za-z0-9\-])(?![^<]*>)/g但在javascript中不支持lookbehinds,所以我不知道该怎么做。

编辑:我认为张贴项目将帮助,所以this is what I'm working on.

+0

@WiktorStribiżew这是一个有点混乱,你不介意解释? – zevee

+0

从你的代码中,我猜你想匹配一个不是复合词的一部分的整个单词'hello',只能在'<...>'子串之外替换它。尝试['s.replace(/(<[^>)*>)|( - )?\ b(hello)\ b(?! - )/ gi,function($ 0,$ 1,$ 2,$ 3){return $ 1?$ 0: ($ 2?$ 0:“!!!”+ $ 3 +“!!!”);})'](https://jsfiddle.net/ma9seau9/1/)。 –

回答

1

在这里,我搜索hello它必须有至少在两侧空白字符,或者开始或结束字符串。

所以在我的例子中,我已经添加了一对额外招呼的,只是测试线的开始&末也。

var re = /(^|\s)(hello)(\s|$)/g; 
 

 
var str = 'hello helloa ahello hello <hello> hello'; 
 

 
console.log(str.replace(re, "$1!!$2!!$3"));

+0

这是伟大的,但我无法企及的空格字符 – zevee

+1

@zevee我已经更新了做多的捕捉组,并把它显示我用更换包装的Hello在''!我 – Keith

+0

已经把它变成我的代码(上面链接),它似乎没有突出显示任何内容... – zevee

相关问题