js中match方法返回值的理解

我输入的正则为:/^<((?:[a-zA-Z_][\-\.0-9_a-zA-Z]\😃?[a-zA-Z_][\-\.0-9_a-zA-Z])/去匹配

这个标签的标签名
js中match的返回值如下:

上面这个引发了我的思考有了下面尝试:

let str="<divkdiv id='app'>"
let arr=str.match(/^<((?:[a-zA-Z][\\-\\.0-9a-zA-Z]\\:)?[a-zA-Z][\\-\\.0-9a-zA-Z]*)(?:[k])([a-zA-Z][\\-\\.0-9a-zA-Z]*)/) //输出 ['<divkdiv','div','div']
let arr=str.match(/^<((?:[a-zA-Z][\\-\\.0-9a-zA-Z]\\:)?[a-zA-Z][\\-\\.0-9a-zA-Z]*)[k]([a-zA-Z][\\-\\.0-9a-zA-Z]*)/)  //输出 ['<divkdiv','div','div']
let arr=str.match(/^<((?:[a-zA-Z][\\-\\.0-9a-zA-Z]\\:)?[a-zA-Z][\\-\\.0-9a-zA-Z]*)(k)([a-zA-Z][\\-\\.0-9a-zA-Z]*)/)  //输出 ['<divkdiv','div','k','div']
let arr=str.match(/^<((?:[a-zA-Z][\\-\\.0-9a-zA-Z]\\:)?[a-zA-Z][\\-\\.0-9a-zA-Z]*)k([a-zA-Z][\\-\\.0-9a-zA-Z]*)/)  //输出 ['<divkdiv','div','div']
console.log(arr);

```js
根据结果和多次的验证暂时得出当前看到的结论为:match返回的数组中0索引为匹配到的总体字符串,1索引为第一个()这个分组中匹配到的东西,如果还匹配到了这个第二个那么索引2就是第二个()匹配到的东西
中括号中[]的字符虽然被匹配到但是不会储存,也就是说不会出现在match返回的数组中如果是(?:后面是表达式),那么就算这个()匹配到了东西那么这个东西也不会被保存,不会出现在mtach返回的数组中
上方图片中的groups表示分组,为undefined表示没有找到分组
index表示匹配到第一个字符所在的索引
input表示从哪里拿到的字符串,也就是被取值字符串
posted @   帅到被人砍的阿豪  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示