困饶我好久的问题---关于正则表达式中的符号 $

coolyulei_ 2006-12-08 03:47:31
1.
var r, re;
var s = "The quick brown fox jumped over the lazy yellow dog.";
re = /(\S+)(\s+)(\S+)/g;
r = s.replace(re, "$3$2$1"); //交换每一对单词。


2.
var re=/(-?\d+)(\d{4})/;

while(re.test(value)) {
value = value.replace(re, "$1,$2");
}

我不明白这两段代码中的 $ 到底是个啥子意思,请解答
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
CutBug 2006-12-08
  • 打赏
  • 举报
回复
反相引用
pmz 2006-12-08
  • 打赏
  • 举报
回复
// \s 匹配任何空白字符,包括空格、制表符、换页符等等
// \S 匹配任何非空白字符
// + 匹配前面的子表达式一次或多次
// ( ) 标记一个子表达式的开始和结束位置
// /(\S+)(\s+)(\S+)/ 的结果就是匹配:[字符串][空格][字符串]
// g表示替换所有与/(\S+)(\s+)(\S+)/匹配的字符串

// $n 捕获的第 n 个子匹配,此处 n 为从1到9的十进制一位数
// "$3$2$1"表示输出格式,即第3部分+第2部分+第1部分
muxrwc 2006-12-08
  • 打赏
  • 举报
回复
不知道我的语言表达能力合LZ的意思不。。
muxrwc 2006-12-08
  • 打赏
  • 举报
回复
$是第一个括号里的内容
比如
var r = /(\d{3})/;
var s = "123456";
var j = s.replace(r, "$1,");
这里$1就是第一个括号里匹配的内容。(第一个括号匹配的是123)
所以j的结果就是123,456
以此类推$n。。。
如果出现欠套的话比如
var r = /((\d{2})(\d{1}))/;
var s = "123456"
$1就是最外层的括号(第一次出现的括号)所以结果是123
$2就是第一个括号里面的里面的第一个括号(第二个次出现的括号)结果是12
$3结果就是3

87,993

社区成员

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

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