在这种情况下如何使用javascript替换正则表达式?
<div id="content" style="left: 200px">
=><div id="content" style="left: -200px">
var num = $('#content').attr('style');
alert(num.replace.replace('/[0-9]+/g','-\\$1'));
<div id="content" style="left: -200px">
=><div id="content" style="left: 200px">
var num = $('#content').attr('style');
alert(num.replace.replace('/-[0-9]+/g','\\$1'));
我的代码似乎不起作用,需要帮助。感谢名单。
答案 0 :(得分:1)
使用$&
表示第二个参数中的匹配值。这是.replace
的JavaScript功能,而不是正则表达式的功能。
var x = "left: 200px".replace(/\d+/,'-$&')
// x == "left: -200px"
答案 1 :(得分:1)
$1
指的是第一个捕获组 - 其中没有。正如约翰所说,你可以使用$&
来引用整场比赛。
要使用$1
,您需要在匹配项周围放置()
以创建捕获组/([0-9]+)/g
答案 2 :(得分:1)
这样做:
$('#content').css('left', function (i, value) {
return -parseInt(value);
});
这是一个演示(点击红色框):http://jsfiddle.net/wared/s6M43/。
答案 3 :(得分:0)
replace
也需要一个函数,你可以做类似
var str = '<div id="content" style="left: 200px"> => <div id="content" style="left: -200px">';
str.replace(/(-?)([0-9]+)/g, function(match, sign, px) { return '-' == sign ? px : '-' + px })
//'<div id="content" style="left: -200px"> => <div id="content" style="left: 200px">'