首页 > 解决方案 > Javascript 问题我正在尝试从 textarea 中提取字符串

问题描述

这是我的代码:

        var input = document.getElementById("input").value;
        var string = input.toString();

        var m = new RegExp('Stipendio' + '(.*?)' + 'D', 'gm');
        var match = string.match(m);

我必须提取这个字符串:

助学金+ 一些文字 一些文字 一些文字 + D

嗨,我正在尝试从 textarea 中提取字符串,但我的 var 匹配始终为空!

我哪里错了?在另一个脚本中它完美地工作。

谢谢

标签: javascriptregexmatch

解决方案


Stipendio + some text some text some text + D正如您在问题中所述,我假设您的输入字符串是。

您的 RegExp 有问题(您的两个+正在连接字符串,它们实际上不是 RegExp 的一部分,并且gRegExp 标志在这里不适合)。

您的RegExp 可以通过多种方式创建

  • new RegExp(/Stipendio \+ (.*?) \+ D/m);
  • new RegExp(/Stipendio \+ (.*?) \+ D/, "m");
  • new RegExp("Stipendio \\+ (.*?) \\+ D", "m");(需要双重转义\\

您也可以.match()像这样直接使用它:string.match(/Stipendio \+ (.*?) \+ D/m)

hhh你的使用.toString()是多余的是对的。

总而言之,您的代码可能是:

const string = document.getElementById("input").value;
const m = new RegExp("Stipendio \\+ (.*?) \\+ D", "m");
const match_result = string.match(m);
console.log(match_result === null ? null : match_result[1]);
<textarea id="input">Stipendio + some text some text some text + D</textarea>


推荐阅读