1

将 aa 正则表达式的开头和结尾定义为捕获组中的边界的正确语法是什么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应该被捕获......帮助?

4

3 回答 3

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(...)

于 2012-10-31T03:26:42.533 回答
3

试试这个:

var regex = /sub-theme-(\w+)/;
于 2012-10-31T03:27:38.867 回答
2

Javascript RegExp 不支持某些高级正则表达式功能,例如lookbehindes、命名捕获组……这本书(面向 Web 开发人员的专业 Javascript,第 3 版)p136:

模式限制

尽管 ECMAScript 的正则表达式支持已经完全开发,但它确实缺少一些在 Perl 等语言中可用的高级正则表达式特性。ECMAScript 正则表达式不支持以下功能(有关更多信息,请参阅 www.regularexpressions.info):

  • \A 和 \Z 锚点(分别匹配字符串的开头或结尾)
  • 回顾
  • 联合和交叉类
  • 原子分组
  • Unicode 支持(一次匹配单个字符除外)
  • 命名捕获组
  • s(单行)和 x(自由间距)匹配模式
  • 条件句
  • 正则表达式注释

尽管有这些限制,ECMAScript 的正则表达式支持对于完成大多数模式匹配任务来说还是足够强大的。

于 2012-10-31T03:33:55.440 回答