首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非贪婪的RegEx用于mark.js

非贪婪的RegEx用于mark.js
EN

Stack Overflow用户
提问于 2020-08-01 07:27:59
回答 1查看 58关注 0票数 0

我刚刚开始使用mark.js (https://markjs.io),现在我正试图找到合适的RegEx来捕获尽可能少的数据(非贪婪类型),并且不超过一定数量的字符。

我尝试了多个选项,到目前为止,我有这三个正则表达式,但每个正则表达式都有自己的错误:

  1. w(.{1,30})?3 -捕获'word1 word2 word3 wo rd3',而不是'word3‘和'wo rd3';

  1. w(\w{1,30})?3 -按其应有的方式捕获'word3‘,但对于'wo rd3 3’却失败;

  1. w((\w| ){1,30})?3 -这与上面的第一个选项完全一样。

为了更好地理解,请运行下面的代码。

你觉得我在这里错过了什么拜托?

亚历克斯

代码语言:javascript
复制
var regex = /w(.{1,30})?3/i;
      // var regex = /w(\w{1,30})?3/i;
      // var regex = /w((\w| ){1,30})?3/i;

      var instance = new Mark(document.querySelector("body"));
      instance.markRegExp (regex, {
        className: "mark"
      });
代码语言:javascript
复制
.mark {
        color: white;
        background: red;
      }
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/mark.js/8.8.3/mark.min.js"></script>


    <div>word1 word2 word3 wo rd3 word4</div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-01 07:53:51

w(.{1,30})?3 -捕获'word1 word2 word3 wo rd3',而不是'word3‘和'wo rd3';

是的,因为.{1, 30}意味着捕获最多30个字符(换行符除外)。因为在第一个w和最后一个3之间只有22个字符,所以它将匹配所有的字符。

w(\w{1,30})?3 -它应该捕获'word3‘,但是对于’woRd3‘却失败了;

是的,因为\w只匹配单词字符,而不匹配空格。

w((\w| ){1,30})?3 --这与上面的第一个选项完全一样。

是的,因为(\w | ).几乎完全一样。(.还将匹配\t和其他类型的空格。)

如果您想匹配以w开头以3结尾的任何内容,其中最多有一个空格,则可以使用:

代码语言:javascript
复制
w\w+?(\s\w+?)?3

+?表示您正在寻找的“非贪婪”匹配类型。但是,此正则表达式也将与word2 word3匹配。如果以数字结尾的任何内容表示潜在匹配的结束,则可以使用:

代码语言:javascript
复制
w[a-zA-Z]+?(\s[a-zA-Z]+?)?3

而且,由于您已经使用了/i标志,所以可以将[a-zA-Z]进一步简化为[a-z]

代码语言:javascript
复制
var regex = /w[a-z]+?(\s[a-z]+?)?3/ig;
var instance = new Mark(document.querySelector("body"));
instance.markRegExp (regex, {
  className: "mark"
});
代码语言:javascript
复制
.mark {
        color: white;
        background: red;
      }
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/mark.js/8.8.3/mark.min.js"></script>

<div>word1 word2 word3 wo rd3 word4</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63202816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档