我有一个改变所选元素的HTML的函数..
$('p').fill('John'); // "John"
..用当前HTML替换$value
..
$('p').fill('Hi $value.') // "Hi John."
..经常。
// Should be "The keyword is $value."
$('p').fill('The keyword is \$value.'); // "The keyword is \Hi John.."
我目前使用它来解析值..
value.replace(/\$value/gi, item.innerHTML);
..我想出的解决方案是......
value.replace(/[^\\]\$value/gi, '$1' + item.innerHTML);
..但在某些情况下,它不起作用。
// Ends up with "$value John."
$('p').fill('Hi') // Yes, it supports stacking.
.fill('$value John.'); // Should be "Hi John."
我也试过..
value.replace(/[^\\]?\$value/gi, '$1' + item.innerHTML);
..但这有很多问题。
$1
不会被替换,我会被卡在随机插入的位置。$1
。有关如何解决此问题的任何想法?
答案 0 :(得分:0)
反斜杠是字符串中的转义字符,因此使用它不会使它出现在字符串中。尝试使用其中两个。您将留下文字\
。
通过使用Function
作为替换参数,您可以在JavaScript正则表达式中获得负面的lookbehinds。
var result = str.replace(/(.)(\$value)/, function(all, precedingChar, matched) {
if (precedingChar == '\\') {
return matched;
}
return precedingChar + 'hi John';
});
此功能将完全按照您的方式执行,但如果您在匹配前加上\\
,则会返回不变的字符串。