正则关于$的问题。

ghldty 2013-09-05 09:19:08
代码如下:

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
var rep = url.replace(reg,"$3$2$1");
alert(rep);

结果在安卓手机上的显示结果竟然就是“$3$2$1”。求解。
或者说有什么情况,会导致JS中的$不能用。
十分感谢啊。
...全文
159 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghldty 2013-09-09
  • 打赏
  • 举报
回复
引用 7 楼 fzfei2 的回复:
[quote=引用 5 楼 ghldty 的回复:] [quote=引用 3 楼 fzfei2 的回复:] 这样运行看看什么结果

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
alert(reg);// 看下正则对不对
alert( reg.test(url) )
alert(RegExp.$1);
正则应该是没问题的,这是个移动OA开发的问题。在电脑模拟和苹果手机上都没问题,就安卓手机有问题。 所以想问下,是不是这样写的格式有问题,不太正规,或者JS版本等其他因素影响?[/quote] 可能是浏览器的问题不是系统的问题,安卓上也可装不同的浏览器 你就单独运行上面那段代码是什么结果[/quote] 问题已解决,开发环境的问题。谢谢啦
ghldty 2013-09-09
  • 打赏
  • 举报
回复
引用 14 楼 jslang 的回复:
new RegExp("(http:\/\/www.qidian.com\/BookReader\/)(\\d+),(\\d+).aspx","gi"); 这样试试
问题已解决,开发环境的问题。谢谢啦
ghldty 2013-09-09
  • 打赏
  • 举报
回复
引用 4 楼 blzhangvip 的回复:
或者说有什么情况,会导致JS中的$不能用。 使用 noConflict() 方法为 jQuery 变量规定新的名称: var jq=$.noConflict(); 这时$就会失效,可以用jq替代$.
问题已解决,开发环境的问题。谢谢啦
ghldty 2013-09-05
  • 打赏
  • 举报
回复
引用 12 楼 fzfei2 的回复:
输出这结果,真没看懂

document.write( window.navigator.userAgent ) //看下什么浏览器
document.write("".replace+"") //replace方法没有被替换
我也是。所以纠结啊。我要赶火车了。下周再看吧。谢谢啦。
fzfei2 2013-09-05
  • 打赏
  • 举报
回复
输出这结果,真没看懂

document.write( window.navigator.userAgent ) //看下什么浏览器
document.write("".replace+"") //replace方法没有被替换
ghldty 2013-09-05
  • 打赏
  • 举报
回复
引用 10 楼 fzfei2 的回复:
[quote=引用 6 楼 ghldty 的回复:] [quote=引用 3 楼 fzfei2 的回复:] 这样运行看看什么结果

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
alert(reg);// 看下正则对不对
alert( reg.test(url) )
alert(RegExp.$1);
reg:/(http://www.qidian.com/BookReader/)(\d+),(\d+).aspx/ reg.test(url):true alert(RegExp.$1) : null [/quote] 这样试试

alert( "123".replace(/.(2)./,'$1') ); // 试一下是不是不能用$1
var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
var rep = url.replace(reg,function(_,a,b,c){return c+b+a } );
alert(rep)
[/quote] $1 function(p0,p1,p2,p3){[bytecode]}
fzfei2 2013-09-05
  • 打赏
  • 举报
回复
引用 6 楼 ghldty 的回复:
[quote=引用 3 楼 fzfei2 的回复:] 这样运行看看什么结果

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
alert(reg);// 看下正则对不对
alert( reg.test(url) )
alert(RegExp.$1);
reg:/(http://www.qidian.com/BookReader/)(\d+),(\d+).aspx/ reg.test(url):true alert(RegExp.$1) : null [/quote] 这样试试

alert( "123".replace(/.(2)./,'$1') ); // 试一下是不是不能用$1
var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
var rep = url.replace(reg,function(_,a,b,c){return c+b+a } );
alert(rep)
ghldty 2013-09-05
  • 打赏
  • 举报
回复
引用 7 楼 fzfei2 的回复:
[quote=引用 5 楼 ghldty 的回复:] [quote=引用 3 楼 fzfei2 的回复:] 这样运行看看什么结果

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
alert(reg);// 看下正则对不对
alert( reg.test(url) )
alert(RegExp.$1);
正则应该是没问题的,这是个移动OA开发的问题。在电脑模拟和苹果手机上都没问题,就安卓手机有问题。 所以想问下,是不是这样写的格式有问题,不太正规,或者JS版本等其他因素影响?[/quote] 可能是浏览器的问题不是系统的问题,安卓上也可装不同的浏览器 你就单独运行上面那段代码是什么结果[/quote] reg:/(http://www.qidian.com/BookReader/)(\d+),(\d+).aspx/ reg.test(url):true alert(RegExp.$1) : null
ghldty 2013-09-05
  • 打赏
  • 举报
回复
引用 4 楼 blzhangvip 的回复:
或者说有什么情况,会导致JS中的$不能用。 使用 noConflict() 方法为 jQuery 变量规定新的名称: var jq=$.noConflict(); 这时$就会失效,可以用jq替代$.
noConflict不支持。。。难道是JS版本问题。。
fzfei2 2013-09-05
  • 打赏
  • 举报
回复
引用 5 楼 ghldty 的回复:
[quote=引用 3 楼 fzfei2 的回复:] 这样运行看看什么结果

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
alert(reg);// 看下正则对不对
alert( reg.test(url) )
alert(RegExp.$1);
正则应该是没问题的,这是个移动OA开发的问题。在电脑模拟和苹果手机上都没问题,就安卓手机有问题。 所以想问下,是不是这样写的格式有问题,不太正规,或者JS版本等其他因素影响?[/quote] 可能是浏览器的问题不是系统的问题,安卓上也可装不同的浏览器 你就单独运行上面那段代码是什么结果
ghldty 2013-09-05
  • 打赏
  • 举报
回复
引用 3 楼 fzfei2 的回复:
这样运行看看什么结果

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
alert(reg);// 看下正则对不对
alert( reg.test(url) )
alert(RegExp.$1);
reg:/(http://www.qidian.com/BookReader/)(\d+),(\d+).aspx/ reg.test(url):true alert(RegExp.$1) : null
ghldty 2013-09-05
  • 打赏
  • 举报
回复
引用 3 楼 fzfei2 的回复:
这样运行看看什么结果

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
alert(reg);// 看下正则对不对
alert( reg.test(url) )
alert(RegExp.$1);
正则应该是没问题的,这是个移动OA开发的问题。在电脑模拟和苹果手机上都没问题,就安卓手机有问题。 所以想问下,是不是这样写的格式有问题,不太正规,或者JS版本等其他因素影响?
Harley-Chang 2013-09-05
  • 打赏
  • 举报
回复
或者说有什么情况,会导致JS中的$不能用。 使用 noConflict() 方法为 jQuery 变量规定新的名称: var jq=$.noConflict(); 这时$就会失效,可以用jq替代$.
fzfei2 2013-09-05
  • 打赏
  • 举报
回复
这样运行看看什么结果

var reg = new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gi");
var url = "http://www.qidian.com/BookReader/10133,222.aspx";
alert(reg);// 看下正则对不对
alert( reg.test(url) )
alert(RegExp.$1);
ghldty 2013-09-05
  • 打赏
  • 举报
回复
引用 1 楼 fzfei2 的回复:
$3$2$1 ,分组1 组2 组3 对应 (http://www.qidian.com/BookReader/) , (\\d+), (\\d+) 如果没有 对应的分组就直接输出 $n
这个我明白啊。但是输出就是有问题啊。 我alert了下RegExp.$1,然后是空,难道是写的有问题?
fzfei2 2013-09-05
  • 打赏
  • 举报
回复
$3$2$1 ,分组1 组2 组3 对应 (http://www.qidian.com/BookReader/) , (\\d+), (\\d+) 如果没有 对应的分组就直接输出 $n
天际的海浪 2013-09-05
  • 打赏
  • 举报
回复
new RegExp("(http:\/\/www.qidian.com\/BookReader\/)(\\d+),(\\d+).aspx","gi"); 这样试试

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧