/\d(\w)\d/g 和 /\d\w\d/g 有什么区别吗?我做测试的时候两个 正则筛选出来的字符串结果是一样的
下面的是我的例子
'a1a2a3a4a5sdfd'.replace(/\d(\w)\d/g,"X")
"aXaXa5sdfd"
'a1a2a3a4a5sdfd'.replace(/\d\w\d/g,"X")
"aXaXa5sdfd"
区别在于exec()返回的数组不一样
第一个:一个数组会有2个元素,其中第一个是与正则表达式相匹配的文本,第二个则是正则表达式中子表达式的文本
第二个,一个数组只有1个元素,因为没有分组,不存在子表达式
加分组之后的好处还有一个是 /(\d)\w\1/ 这个\1表示第一个分组 并且筛选的内容是和第一个一样的 这也是分组的一个好处之一
加括号表示分组,在你使用exec()方法的时候,就会有区别的