仅当单词'前没有特定字符时替换它
Replace a word only if it's not preceded by a certain character(s)
我喜欢替换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"answers"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"
替换函数将body
替换为HELLO
,但我想替换body
(与nospace infront)。另外,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演示例如,如果你想用fos
替换字符串,你可以写$1fos
。
UPDATE:跟随@yankee的评论,我已经改变了regex:添加了|^
,使其在testHtmlStr
以hitName1
开始或等于它时工作
嗯,我无法理解你到底想做什么,但我认为你正试图从包含标签和其他textNodes的字符串中替换一些标签
然而,我认为如果你使用"for"循环来验证哪些标签应该被替换,哪些标签不应该被替换,你将能够做你需要的。
for(result in testResult5)
{
if(result!="body") {// do what you want}
}
相关文章:
- 无效字符替换时出错
- 在JavaScript中,如何用一个字符替换字符串中的所有字母
- 不能将 UTF-8 字符替换为正则表达式
- .keyup() 上的非拉丁字符替换在快速键入时不起作用
- 将字符串中的重复字符替换为不断增长的数字 [Javascript]
- 为什么不用特殊字符替换选择文本,以及如何删除此特殊字符
- 将ASCII字符替换为等效字符
- Javascript:用其他字符替换反斜杠和双引号
- Angularjs:显示字符串中的最后四个字符,并将其余字符替换为“X”
- 用字符替换将字符串之类的数组替换为数组
- 用连字符替换字符串中的空格
- 特殊字符替换为空格
- 将所有字符替换为 #,最后 4 个字符除外
- 将文本上的特殊字符替换为 jquery
- 将字符替换为标记(例如 *hi* 到
hi
) - JS中的多个字符替换 - 如何在同一函数中停止对先前结果的替换
- 删除时将字符替换为另一个字符
- 将所有特定字符替换为计数器升序
- Javascript 将 32 以下的字符替换为 x(charcode)
- Javascript:正则表达式,用于将某些字符替换为十六进制代码