正则表达式以查找模式并仅替换其中的一部分

时间:2015-09-17 13:59:33

标签: javascript regex

我想知道如何使用RegEx查找模式并在JavaScript中替换它的一部分。

让我们说,例如,我想替换像-foo之类的一些模式,但只要它后面有一个-,就像-foo-一样,但只需替换-foo read()

有人可以详细解释RegEx的构建吗?

我在这里没有找到详细的解释,只是解释最少的代码。

2 个答案:

答案 0 :(得分:4)

您需要使用正面预测(?=-)来检查-之后-foo的存在,但不会消费



var s = "-foo- -foo";
alert(s.replace(/-foo(?=-)/g, 'REPLACED'));




您可以在regular-expressions.info阅读更多关于预见(以及JS-regex引擎不支持的后视)的信息。

主要思想是检查文本是否存在在环视中定义的某些模式,并基于允许或不通过匹配。它们实际上可以与锚点一起有效地使用,但这不是这种情况。

  

Lookahead和lookbehind,统称为" lookaround",是零长度断言... lookaround实际匹配字符,但随后放弃匹配,仅返回结果:匹配或不匹配...它们不消耗字符串中的字符,但仅断言是否可以匹配。

答案 1 :(得分:1)

正如第一张海报所说,您需要使用前瞻(?=)来检查其他角色。在这种情况下,你需要寻找的角色是 - ,因此你的模式将使用前瞻 - 即(?= - )。