当前位置: 首页 > 知识库问答 >
问题:

Javascript Regex正面展望

夹谷浩宕
2023-03-14

将正则表达式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]);

这是匹配的子主题-,虽然如果我需要在捕获中包含它并进行字符串替换以删除它是可以的,但我很难为我的(?-(\b))/捕获组找到正确的语法。似乎有了积极的前瞻性,子主题-应该是省略的部分,home应该被捕获…帮助吗?

共有3个答案

贺季同
2023-03-14

Javascript RegExp不支持一些高级的正则表达式特性,比如lookbehindes、命名捕获组....该书(面向Web开发人员的专业Javascript,第3版)p136:

模式限制

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

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

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

步炯
2023-03-14

试试这个:

var regex = /sub-theme-(\w+)/;
柯镜
2023-03-14

为什么不直接捕捉你要找的绳子呢?

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(…)的结果的更多信息。

 类似资料:
  • RegExp构造函数 在ES5中,RegExp构造函数的参数有两种情况。 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)。 var regex = new RegExp('xyz', 'i'); // 等价于 var regex = /xyz/i; 第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。 var regex = new RegExp

  • 扩展说明 对等网络节点组网器。 扩展接口 org.apache.dubbo.container.page.PageHandler 扩展配置 <dubbo:protocol page="xxx,yyy" /> <!-- 缺省值设置,当<dubbo:protocol>没有配置page属性时,使用此配置 --> <dubbo:provider page="xxx,yyy" /> 已知扩展 org.ap

  • 在实现一个功能的同时,很可能需要界面上的 UI 交互,Cocos Creator 3D 也为扩展提供了这种能力。 在扩展里声明面板 在 package.json 里可以定义 panels 字段。 { "name": "hello-world", "panels": { "default": { "title": "world panel",

  • 但其他事情都不起作用。例如: 显示:没有为此数据库实例注册名为的过程。请确保正确拼写了过程名,并正确部署了过程。 此外: Edit3:现在调用该过程apoc.spatial.sortByDistance...文档不是最新的。您必须查看存储库的代码...

  • #游戏策划面经#共笔试+两轮业务面+一轮HR面(目前二面未出结果) 笔试:第一题必答,二、三题选一个答 1.你最喜欢的游戏是哪一款?介绍下这款游戏哪里好玩? 考察的是系统拆解并从玩家+策划两个角度给出自己的理解 2.针对你喜欢的一款游戏,拆分一部分系统功能点,并进行优缺点分析 细化一个系统,并展开自己的分析 3.用roblox编辑器创作一个关卡,并用图文的方式介绍关卡 考察游戏编辑器的应用,以及你

  • 简单示例 # webbrowser_open.py import webbrowser webbrowser.open( 'https://docs.python.org/3/library/webbrowser.html' ) Windows vs. Tabs # webbrowser_open_new.py import webbrowser webbrowser.open_ne