首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

js中正则表达式(持续)疑问

2013-01-17 
js中正则表达式(继续)疑问?1.var num 1234 5678var newNum num.replace(/(\d{4}) (\d{4})/, $2 $1

js中正则表达式(继续)疑问?
1.


var num = "1234 5678";
var newNum = num.replace(/(\d{4}) (\d{4})/, "$2 $1");
alert(newNum);


$2与$1在这表示什么?为什么会这样定义?

2.

var color = "#990000";
/#(\d+)/.test(color);
alert(RegExp.$1);

alert(/(dog)\1/.test("dogdog"));


中的/#(\d+)/.test(color);若去除+,即/#(\d)/.test(color);为什么最下边的dogdog改成dog会false?没有+不是表示只写一个数字吗?
[解决办法]
两个都跟反向引用有关
反向引用有两种表示方法:\数字(<99)或$数字
数字表示第几个括号匹配的内容

1的$2就是5678,$1就是1234了

2那个跟/#(\d+)/.test(color);无关
问题是\1表示前面括号的dog,就是连续两个dog的意思,当你test里面只有一个就当然匹配不到了
(ok)\1 = okok
((abc)(ok))\1 == abcokabcok
((abc)(ok))\2 == abcokabc
((abc)(ok))\3 == abcokok
[解决办法]
$1 $2代表2个符合要求的group来的。
[解决办法]
$n代表粉盒第n个括号的内容

热点排行
Bad Request.