正则表达式没有取代价值

时间:2014-03-27 20:37:10

标签: jquery regex replace

在我的下面的代码中,除了$('#output').html(value.replace(/[\(\)\{\}\[\]\.\,\;\:\"\']/g, ''))之外,一切都运行良好 不会取代那些符号,我不确定为什么。我做了一些研究并尝试将两个替换品连接在一起,但这也没有用。

function checkValue() {
var value = document.getElementById("thisinput").value;
var unspeakables = ['shout', 'message'],
    formatting = { 
        'shout' : {
            'color' : 'red'
        },
    };
$('#output').html(value.replace(/[\(\)\{\}\[\]\.\,\;\:\"\']/g, '')), 
$('#output').html(value.replace(new RegExp('\\b' + unspeakables.join('\\b|\\b') + '\\b','gi'), 
function(matchedWord) {
    $('#output').css(formatting[matchedWord.toLowerCase()] || {});
    return '';
}));

我希望有人可以帮助我!!

非常感谢。

1 个答案:

答案 0 :(得分:1)

你打电话

$('#output').html(

两次。第二次,它取代了第一次设置的内容。

而不是

$('#output').html(value.replace(/[\(\)\{\}\[\]\.\,\;\:\"\']/g, '')), 
$('#output').html(value.replace(new RegExp('\\b' + unspeakables.join('\\b|\\b')
...
你可能想要

value = value.replace(/[\(\)\{\}\[\]\.\,\;\:\"\']/g, '')
.replace(new RegExp('\\b' + unspeakables.join('\\b|\\b') + '\\b','gi'),
    function(matchedWord) {
        $('#output').css(formatting[matchedWord.toLowerCase()] || {});
        return '';
    }
);
$('#output').html(value);

也许你对什么感到困惑

value.replace(someRegex,someReplacement);

不会更改 value,因为JavaScript中的字符串是不可变的。 返回一个新字符串。