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