替换所有不规则表达式

时间:2015-07-10 16:09:45

标签: javascript

我想知道如何在javascript中替换不规则表达式。我已经尝试了我在stackoverflow上阅读但它还没有工作。 我想用空格替换所有+。这是我的代码

<script>
String.prototype.replaceAll = function(find,replace){
    var str= this;
    return.replace(new RegExp(find.replace(/[-\/\\^$*?.()|[\]{}]/g, '\\$&'),'g'), replace); };

$(document).ready(function(){
    $('#myform').submit(function(){ 
        var selectedItemsText = '';
        $(this).find('input[type="checkbox"]:checked').each(function(){
            selectedItemsText += $(this).val() + '\r';

        });
            selectedItemsText=selectedItemsText.replaceAll('+',' ');

         if (confirm("Are you sure you would like to exclude these folders(s)?"+selectedItemsText))
        {
            $.ajax({
                type:"POST",
                url:catalog2.php,
                data:$('#chk[]').val(),



                   });      
            }           

            return false;
    });
});

</script>

2 个答案:

答案 0 :(得分:4)

实际上你可以使用更好的解决方案:

var rep = str.replace(/\+/g, " ");

请记住,您需要转义+,因为这是一个保留字。有关解释:

/\+/g
  \+ matches the character + literally
  g modifier: global. All matches (don't return on first match)

答案 1 :(得分:1)

根据What special characters must be escaped in regular expressions?,您应该在{+ 1}}外的字符类中转义.^$*+?()[{\|并在其中

即,

^-]\

但是,请考虑较短的

String.prototype.replaceAll = function(find, replace) {
  return this.replace(
    new RegExp(
      find.replace(/[.^$*+?()[{\\|^\]-]/g, '\\$&'),
      'g'
    ),
    replace
  );
};
'a+b'.replaceAll('+', ' '); // "a b"