如下 这里面的a 和b 明明不存在 为何会得到66 88 这些值 能否详细说明下
1、字符串的组成。
字符串是由字符和空串组成的。如:‘a’可以看作,‘(空1)a(空2)’,字符串中每个字符的两边都有‘空’。注意:空串不是空格等不可见字符,不可见字符也是字符。
2、空串。
空串是一种什么都不是的存在。在正则中,可以通过量词或环视等来匹配空串。如 /a{0}/, 表示要匹配 0 个 ‘a', 也就是 “空”。
如上图所示,'abc' 这个字符串中共有4个空串。所以 'abc' = '(空1)a(空2)b(空3)c(空4)'
3、*量词 。
* 在正则中表示 0 到无穷多,所以 * 等价于 {0,}
/a*/ 等价于 /a{0,}/.
4、匹配过程。
用 a* 匹配 'a',相当于 a{0,} 匹配 '(空1)a(空2)'。
(1) 字符串的当前位置定位到 (空1)
(2) 子表达式 a{1} 匹配 字符串当前位置(空1)右边的字符 a, 匹配成功,a 被替换为 6
(3) 将字符串的当前位置定位到(空2),a{0} 成功匹配到 (空2),(空2)被替换为 6
以上是我个人的理解,不对的地方,还望指正。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2019-07-26
首先,要理解/a*/的意思
正则 a* 表示,匹配0个字符,或者多个连续的a;
/a*/g 这个g是全局替换
下面解释一下此处代码
本回答被提问者和网友采纳'a'.replace(/a*/g,'6')
首先匹配字串'a' 中的a 替换为6, 因为是全局替换,继续向后匹配,又匹配到了空字符,继续替换为6.所有结果为66