javaScript正则表达式中一个关于日期问题

var value="2009/04/06";
var year;
var month;
var day;
var reg = /^(\d{4})(\/)(01|02|03|04|05|06|07|08|09|10|11|12)(\/)([0-3]?\d)$/;
if (reg .test(value)) {
year = value.replace(reg ,"$1");//$1代表什么意思??
month = value.replace(reg ,"$3");//同上
day = value.replace(reg ,"$5");//同上

}
alert(year+month+day);//弹出20090406
$1代表什么意思??
请详细解释 谢谢!!!

$1表示捕获的"括号内"的组,比如:
/(\d)(\.)(\w)/

(\d)中就是组一的将被捕获的数字,也就是 $1
(\.)则是$2
(\w)则是组三中的数据,也就是:$3, 后面的依次类推, 注意()内如果存在(),则扩号外面的也算捕获组,比如:
/(\.(\d))/
如果想捕获\d中的数字,则应该是$2而不是$1

如果没有括号:/\d{4}-\d{1,2}-\d{1,2}/则没有任何捕获

year = value.replace(reg ,"$1");//$1代表什么意思?? 是将(\d{4})中捕获的4为数字从value替换为指定的数据,后面的依次类推

在replace 方法中使用 $1 来引用所保存的第一个子匹配。如果有多个子匹配,则可以用 $2, $3 等继续引用。

假定希望将下述的URI 分解为协议 (ftp, http, etc),域名地址以及页面/路径:

http://msdn.microsoft.com:80/scripting/default.htm
下面的正则表达式可以提供这个功能。对 JScript,为:

/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/
对 VBScript 为:

"(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)"
第一个附加子表达式是用来捕获该 web 地址的协议部分。该子表达式匹配位于一个冒号和两个正斜杠之前的任何单词。第二个附加子表达式捕获该地址的域名地址。该子表达式匹配不包括 '^'、 '/' 或 ':' 字符的任何字符序列。第三个附加子表达式捕获网站端口号码,如果指定了该端口号。该子表达式匹配后跟一个冒号的零或多个数字。最后,第四个附加子表达式捕获由该 web 地址指定的路径以及\或者页面信息。该子表达式匹配一个和多个除'#' 或空格之外的字符。

将该正则表达式应用于上面所示的 URI 后,子匹配包含下述内容:

RegExp.$1 包含 "http"

RegExp.$2 包含 "msdn.microsoft.com"

RegExp.$3 包含 ":80"

RegExp.$4 包含 "/scripting/default.htm"

希望你们明白
温馨提示:答案为网友推荐,仅供参考
相似回答