Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用正则表达式向JavaScript中的搜索模式添加基本样式?_Javascript_Regex - Fatal编程技术网

如何使用正则表达式向JavaScript中的搜索模式添加基本样式?

如何使用正则表达式向JavaScript中的搜索模式添加基本样式?,javascript,regex,Javascript,Regex,我可以在JavaScript中使用正则表达式搜索段落中的文本。我想要的是,我想对搜索文本应用基本样式,例如黄色背景(或粗体文本),而不是显示搜索的模式 我叫约翰先生 模式:/M(r|s|rs)/ 输出:我的名字是Mr.John用一个单词boundary\b试着这样做,并以一个点结尾。替换为捕获组1$1: var str=“我的名字是约翰先生Mr Test Mr Test aMr”; str=str.replace(/\b(M(?:r | s | rs)\)/g,“$1”); console.

我可以在JavaScript中使用正则表达式搜索段落中的文本。我想要的是,我想对搜索文本应用基本样式,例如黄色背景(或粗体文本),而不是显示搜索的模式

我叫约翰先生 模式:/M(r|s|rs)/
输出:我的名字是Mr.John

用一个单词boundary
\b
试着这样做,并以一个点结尾。替换为捕获组1
$1

var str=“我的名字是约翰先生Mr Test Mr Test aMr”;
str=str.replace(/\b(M(?:r | s | rs)\)/g,“$1”);

console.log(str)像这样尝试使用单词边界
\b
并以点结尾。替换为捕获组1
$1

var str=“我的名字是约翰先生Mr Test Mr Test aMr”;
str=str.replace(/\b(M(?:r | s | rs)\)/g,“$1”);

console.log(str)您可以使用Mark.js,这是一个节点库,用于此目的并提供多种功能

请看下面的示例代码:

HTML:

这里的“标记”标签是您添加所需样式的位置

JS:


您可以使用Mark.js,这是一个节点库,用于此目的并提供多种功能

请看下面的示例代码:

HTML:

这里的“标记”标签是您添加所需样式的位置

JS:


成功了!我得到的结果没有使用单词边界。pat=“/([a-z.0-9\]+@[a-zA-z]+\[a-z]{2,4})/g;styl.innerHTML=(ori.innerHTML.replace(pat,“$1”);styl.innerHTML=(ori.innerHTML.replace(pat,$1”))顺便说一句,我可以用classList.add来添加样式吗?如果你指的是,我看到了向元素添加类的例子。是的,但是我怎么能在JavaScript中使用正则表达式来添加类呢?非常感谢!这解决了我的问题。我爱Stackoverflow。你们帮了我很大的忙。很好!我在不使用单词boundary的情况下得到了结果。pat=“/([a-z.0-9_]+@[a-zA-Z]+\[a-Z]{2,4})/g;styl.innerHTML=(ori.innerHTML.replace(pat,“$1”);styl.innerHTML=(ori.innerHTML.replace(pat,“$1”))顺便说一句,我可以用classList.add来添加样式吗?如果你指的是,我看到了向元素添加类的例子。是的,但是我如何在JavaScript中使用正则表达式来添加类呢?非常感谢!这解决了我的问题。我喜欢Stackoverflow。你们帮了我很大的忙。这可能很有用,但我更喜欢vanilla JS。使用e.replace函数在这种情况下起作用。@LearnerAKS mark.js也可以作为香草版本提供,这可能很有用,但我更喜欢香草js。使用.replace函数在这种情况下起作用。@LearnerAKS mark.js也可以作为香草版本提供
<h2><a href="https://markjs.io/" target="_blank">mark.js</a> example with custom regular expressions</h2>

<div class="panel panel-default">
  <div class="panel-heading">Search</div>
  <div class="panel-body">
    <div class="search row">
      <div class="col-xs-6">
        <span>Type in a regular expression:</span>
        <input type="text" name="regex" class="form-control input-sm" placeholder="/Lor[^]?m/gmi">
        <button type="button" name="mark" class="btn btn-primary">Mark</button>
      </div>
      <div class="col-xs-6">
        <span>Search options:</span>
        <input type="checkbox" name="opt[]" value="debug"> debug
        <br>
        <span>There are a lot more <a target="_blank" href="https://markjs.io/configurator.html">options</a>!</span>
      </div>
    </div>
  </div>
</div>


<div class="panel panel-default">
  <div class="panel-body context">
    <p>
      Lorem ipsum dolor sit āmet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, nò sea takimata
      sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
      rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
      At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie çonsequat, vel illum dolore
      eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit prāesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet,
    </p>

  </div>
</div>

<div class="panel panel-default">
  <div class="panel-body">
    <p>
      <small>Demo by <a href="https://github.com/julmot" target="_blank">Julian Motz</a></small>
    </p>
  </div>
</div>
body {
  margin: 15px;
}

div.search span,
div.search input[name="regex"] {
  display: block;
}

div.search input[name="regex"],
button {
  margin-top: 4px;
}

div.panel {
  margin-bottom: 15px;
}

div.panel .panel-body p:last-child {
  margin-bottom: 0;
}

mark {
  padding: 0;
  background: transparent;
  font-weight: bold;
}
$(function() {

  var mark = function() {

    // Read input
    var inputstring = $("input[name='regex']").val();
    if (inputstring.trim() === "") {
      return;
    }

    // Create regex
    var flags = inputstring.replace(/.*\/([gimy]*)$/, '$1');
    var pattern = inputstring.replace(new RegExp('^/(.*?)/' + flags + '$'), '$1');
    var regex = new RegExp(pattern, flags);

    // Determine selected options
    var options = {};
    $("input[name='opt[]']").each(function() {
      options[$(this).val()] = $(this).is(":checked");
    });

    // Mark the regex inside the context
    $(".context").unmark({
      done: function() {
        $(".context").markRegExp(regex, options);
      }
    });
  };


  // Trigger mark action on button click
  $("button[name='mark']").on("click", mark);

});