猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
在JavaScript正则表达式中命名捕获组?
在JavaScript正则表达式中命名捕获组?
据我所知,在JavaScript中没有名为捕获组的东西。获得类似功能的另一种方法是什么?
波斯汪
浏览 1227
回答 3
3回答
qq_笑_17
ECMAScript 2018将命名捕获组引入JavaScript正则表达式。如果您需要支持旧浏览器,您可以使用正常(编号)捕获组执行所有操作,您可以使用命名捕获组执行操作,您只需要跟踪数字 - 如果您的捕获组的顺序可能很麻烦正则表达式的变化。我能想到的命名捕获组只有两个“结构”优势:在一些正则表达式中(.NET和JGSoft,据我所知),您可以在正则表达式中为不同的组使用相同的名称(有关这一事项的示例,请参阅此处)。但是大多数正则表达式都不支持这种功能。如果您需要在数字包围的情况下引用编号的捕获组,则可能会出现问题。假设您想要为数字添加零,因此要替换(\d)为$10。在JavaScript中,这将起作用(只要你的正则表达式中有少于10个捕获组),但Perl会认为你正在寻找反向引号10而不是数字1,然后是a 0。在Perl中,您可以${1}0在这种情况下使用。除此之外,命名捕获组只是“语法糖”。仅在您真正需要时才使用捕获组,并(?:...)在所有其他情况下使用非捕获组。使用JavaScript的更大问题(在我看来)是它不支持详细的正则表达式,这将使可读,复杂的正则表达式的创建更容易。Steve Levithan的XRegExp库解决了这些问题。
0
0
0
MM们
您可以使用XRegExp,这是一种增强的,可扩展的,跨浏览器的正则表达式实现,包括对其他语法,标志和方法的支持:添加新的正则表达式和替换文本语法,包括对命名捕获的全面支持。添加两个新的正则表达式标志:s,使点匹配所有字符(也称为dotall或单行模式),以及x自由间距和注释(也称为扩展模式)。提供一系列功能和方法,使复杂的正则表达式处理变得轻而易举。自动修复正则表达式行为和语法中最常遇到的跨浏览器不一致性。允许您轻松创建和使用为XRegExp的正则表达式语言添加新语法和标志的插件。
0
0
0
慕运维8079593
另一种可能的解决方案:创建一个包含组名和索引的对象。var regex = new RegExp("(.*) (.*)");var regexGroups = { FirstName: 1, LastName: 2 };然后,使用对象键来引用组:var m = regex.exec("John Smith");var f = m[regexGroups.FirstName];这使用正则表达式的结果提高了代码的可读性/质量,但不提高了正则表达式本身的可读性。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
正则表达式
正则判断数字末尾的为0情况
3 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续