我想知道如何使用RegEx查找模式并在JavaScript中替换它的一部分。
让我们说,例如,我想替换像-foo
之类的一些模式,但只要它后面有一个-
,就像-foo-
一样,但只需替换-foo
read()
。
有人可以详细解释RegEx的构建吗?
我在这里没有找到详细的解释,只是解释最少的代码。
答案 0 :(得分:4)
您需要使用正面预测(?=-)
来检查-
之后-foo
的存在,但不会消费:
var s = "-foo- -foo";
alert(s.replace(/-foo(?=-)/g, 'REPLACED'));

您可以在regular-expressions.info阅读更多关于预见(以及JS-regex引擎不支持的后视)的信息。
主要思想是检查文本是否存在在环视中定义的某些模式,并基于允许或不通过匹配。它们实际上可以与锚点一起有效地使用,但这不是这种情况。
Lookahead和lookbehind,统称为" lookaround",是零长度断言... lookaround实际匹配字符,但随后放弃匹配,仅返回结果:匹配或不匹配...它们不消耗字符串中的字符,但仅断言是否可以匹配。
答案 1 :(得分:1)
正如第一张海报所说,您需要使用前瞻(?=)来检查其他角色。在这种情况下,你需要寻找的角色是 - ,因此你的模式将使用前瞻 - 即(?= - )。