将正则表达式word
的开头和结尾定义为捕获组中的边界的正确语法是什么,如下所示:
var $classes = $( 'body' ).attr('class'); // string 'foo bar sub-theme-home';
var regex = /sub-theme-(?=(\b))/;
var sub_theme = regex.exec($classes);
console.log(sub_theme[0]);
这是匹配的sub-theme-
,如果我需要在我的捕获中包含它并进行字符串替换以删除它,我很难找到我的(?-(\b))/
捕获的正确语法组。好像前瞻性,sub-theme-
应该是省略的部分,home
应该被捕获......帮助?
答案 0 :(得分:5)
为什么不捕捉你正在寻找的字符串?
var $classes = $( 'body' ).attr('class'); // string 'foo bar sub-theme-home';
var regex = /sub-theme-(\w+)/;
var sub_theme = regex.exec($classes);
console.log(sub_theme[1]);
在MDN查看有关带括号的子字符串以及regex.exec(...)
的结果的详情。
答案 1 :(得分:3)
试试这个:
var regex = /sub-theme-(\w+)/;
答案 2 :(得分:2)
Javascript RegExp不支持一些高级正则表达式功能,如lookbehindes,命名捕获组.... 这本书(专业的Javascript for Web Developers,第3版)p136:
模式限制
尽管ECMAScript的正则表达式支持已完全开发, 它确实缺少一些高级正则表达式功能 提供Perl等语言。以下功能不是 ECMAScript正则表达式支持(有关更多信息,请参阅 www.regularexpressions。信息):
尽管存在这些限制,ECMAScript的正则表达式支持功能强大 大多数模式匹配任务。