gpt4 book ai didi

javascript - 仅当单词前面没有特定字符时才替换它

转载 作者:行者123 更新时间:2023-11-30 13:31:25 25 4
gpt4 key购买 nike

我喜欢替换 JavaScript 中所有不以 < 开头的字符串或 / .我能够匹配单词,但我只想替换单词,而不是前面的字符。

var hitName1 = "body";

var testHtmlStr = "This is a test string with <body> html tag and with regular body string and another <body> html string and with no flexbody and with /body as in a url string";

var re5 = new RegExp('[^<\/]' + hitName1 , 'gi');

console.log(re5);

var testResult5 = testHtmlStr.match(re5);

console.log(testResult5);

我得到结果 [" body", "xbody"]

如果我使用 replace()而不是 match()我将用替换字符串替换“body”和“xbody”。但我只想用替换字符串替换“正文”。如何做到这一点?

更多解释:

替换的使用:

var testResult5 = testHtmlStr.replace(re5, "HELLO");

console.log(testResult5);

替换后的结果字符串:

"This is a test string with <body> html tag and with regularHELLO string and another <body> html string and with no fleHELLO and with /body as in a url string"

替换函数替换了bodyHELLO , 但我想替换 body (前面没有空格)。还有 xbody替换为 HELLO , 但我只想替换 body不是xbody .

希望这更清楚。

最佳答案

一种方法是围绕前面的字符定义一个捕获组:

var hitName1='body';
var testHtmlStr = "This is a test string with <body> html tag and with regular body string and another <body> html string and with no flexbody and with /body as in a url string";
var re5 = new RegExp('([^<\/]|^)' + hitName1, 'gi');

alert(testHtmlStr.replace(re5, '$1'));

jsFiddle Demo

因此,如果您想用 fos 替换您的字符串,您可以编写 $1fos

更新:根据@yankee 的评论,我更改了正则表达式:添加了 |^ 以使其在 testHtmlStr 开头时工作>hitName1 或等于它。

关于javascript - 仅当单词前面没有特定字符时才替换它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6647679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com