关于JS正则的一个问题
functionformat(a){returna.toString().replace(/^(\d)$/,"0$1")}不太明白正则里面写的括号的意思和后面字符串0$1...
function format(a)
{
return a.toString().replace(/^(\d)$/, "0$1")
}
不太明白正则里面写的括号的意思和后面字符串0$1是神马意思,怎么解读啊 展开
{
return a.toString().replace(/^(\d)$/, "0$1")
}
不太明白正则里面写的括号的意思和后面字符串0$1是神马意思,怎么解读啊 展开
展开全部
<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+/,'$`|$&|$\''));
<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是一起用的,前面用小括号,用面好替换啊。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询