关于JS正则的一个问题

functionformat(a){returna.toString().replace(/^(\d)$/,"0$1")}不太明白正则里面写的括号的意思和后面字符串0$1... function format(a)
{
return a.toString().replace(/^(\d)$/, "0$1")
}
不太明白正则里面写的括号的意思和后面字符串0$1是神马意思,怎么解读啊
展开
 我来答
乌微月2S
2012-12-11 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2901万
展开全部
<html>
<head>
</head>
<body>
<script>
function format(a)
{
return a.toString().replace(/^(\d)$/, "0$1")
}
alert(format(1));
alert(format(2));
alert(format(0));
alert(format("."));
</script>
</body>
</html>
试试这个代码,你就应该能理解了。
其实是匹配单个数字,正则里的小括号是精确匹配的。然后给补足2位。
下面是方法介绍
replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
$1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$' 位于匹配子串右侧的文本。
$$ 直接量符号。
var s = '####aaaabcd';
alert(s.replace(/a+/,'$`|$&|$\''));
更多追问追答
追问
还是有些看不明白哇
()是精准匹配,什么是精准匹配
$1这个还是不明白啊,什么叫与regexp中第一到第99个子表达式相匹配的?假如是$2第二个在哪里
下面写的这个倒是明白
var s = '####aaaabcd';
alert(s.replace(/a+/,'$`|$&|$\''));
这就应该是把第一次遇到所有的a 替换成a左边的文本
$` 就是 ####
$& 就是 aaaa
$\' 就是 bcd
出来就应该是########|aaaa|bcdbcd这个明白
追答
你可以理解成小括号和$1是一起用的,前面用小括号,用面好替换啊。
jiangxibaiyi
2012-12-11 · 跟随风去旅行-伤心的歌
jiangxibaiyi
采纳数:3973 获赞数:14412

向TA提问 私信TA
展开全部
^表示开头,$表示结束, \d表示数字
/^(\d)$/表示匹配数字
后面的,0就是0,$1表示匹配正则表达式所匹配到的字符串的第一部分(这句不知道该怎样表达)

看上面的意思,应该是给数字前面加1个零
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式