js定位符概念

henliqi 2011-03-28 12:58:33
var str=" this is a book about javascript";
var reg=/^(\s*(\w+)){8}/;
reg.test(str);
document.write("<h1>"+RegExp.$1+"<h1>");

上面的代码为什么输出结果是 t
原理是怎么样的?
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
henliqi 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hongmei85 的回复:]

var reg=/^(\s*(\w+)){8}/;
获取到这8个部分
this
is
a
book
about
javascri
p
t
[/Quote]

我这样
var str=" this is a book about javascript";
var reg=/^(\s*(\w+)){8}/;
reg.test(str);
document.write("<h1>"+RegExp.$2+"<h1>");

是不是就把‘p’取出来了?我这样写取不出来啊。而且$3以后都是空值。
funli 2011-04-27
  • 打赏
  • 举报
回复
同意4楼的分析结果。
补充一下:

var str="iab icd ief";

var reg1=/i(\w){2}/;
reg1.test(str);
document.write("<h1>" + RegExp.$1 + "/" + RegExp.$2 + "</h1>");//print "b/"

var reg2 = /i(\w)(\w)/;
reg2.test(str);
document.write("<h1>" + RegExp.$1 + "/" + RegExp.$2 + "</h1>");//print "a/b"
hongmei85 2011-04-26
  • 打赏
  • 举报
回复
var reg=/^(\s*(\w+)){8}/;
获取到这8个部分
this
is
a
book
about
javascri
p
t
henliqi 2011-04-26
  • 打赏
  • 举报
回复
var str=" this is a book about javascript";
var reg=/^(\s*(\w+)){6}/;
reg.test(str);
document.write("<h1>"+RegExp.$1+"<h1>");
楼上说的我明白。
如果改成这样,红色部分改成6,那是对的,输出javascript
但是现在超过6了,那就是说超出字符串长度了,它为什么输出是 ‘t’(最后一个字符) 呢?
超出长度的获取方式是怎么样的啊?
guoyan19811021 2011-03-28
  • 打赏
  • 举报
回复
RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串,以此类推,RegExp.$2,RegExp.$3,..RegExp.$99总共可以有99个匹配

87,910

社区成员

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

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