JS正则表达式问题

如下 这里面的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

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网