首先,我在处理正则表达式方面不是很好,但是我试图创建一个正则表达式来匹配特定的字符串,同时通过使用积极的前瞻跳过匹配字符串的第一个字符来替换它。请在下面查看详细信息

测试字符串asdf.wakawaka asdf.waka df.waka [df.waka (df.waka _df.waka {df,waka

正则表达式(?=[^\w])df\.

替换字符串kkk.

预期结果asdf.wakawaka asdf.waka kkk.waka [kkk.waka (kkk.waka _df.waka {df,waka

但是上面的正则表达式没有找到任何匹配项,因此它不替换任何结果,并在结果中提供原始测试字符串。

没有积极的前瞻性(跳过第一个字符策略),它符合我的要求。见matching regex sample on regex101.com

正向超前给出意外结果regex with positive look aheah on regex101.com

在此先感谢您的帮助。

最佳答案

使用[^\w]表示您要匹配并使用除单词char以外的其他char,然后再替换匹配。

但是,此字符已被消耗,您必须先捕获它才能还原它。您可以使用Gurman的方法来匹配/(^|\W)df\./g并替换为'$1kkk.,但是您也可以使用单词边界:

\bdf\.


请参见regex demo

JS演示:



var s = "asdf.wakawaka asdf.waka df.waka [df.waka (df.waka _df.waka {df,waka";
console.log(
  s.replace(/\bdf\./g, 'kkk.')
);





但是,如果您不想在字符串的开头替换df.,请使用



var s = "df. asdf.wakawaka asdf.waka df.waka [df.waka (df.waka _df.waka {df,waka";
console.log(
  s.replace(/(\W)df\./g, '$1kkk.')
);

关于javascript - Javascript RegEx正向超前无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46853707/

10-12 18:44