我想知道如何在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>
答案 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"