正在尝试删除尾部文本

Trying to remove trailing text

本文关键字:尾部 文本 删除      更新时间:2023-09-26

我有以下代码。我想从中提取最后一个文本(hello64(。

<span class="qnNum" id="qn">4</span><span>.</span> hello64 ?*

我使用了下面的代码,但它删除了所有整数

questionText = questionText.replace(/<span'b.*?>/ig, "");
questionText=questionText.replace(/<'/span>/ig, "");
questionText = questionText.replace(/'d+/g,"");
questionText = questionText.replace("*","");
questionText = questionText.replace(". ","");  i want to remove the first integer, and need to keep the rest of the integers

这是替换整数的第三行.replace(/'d+/g,"")。如果要保留整数,则不要替换'd+,因为它与一个或多个数字匹配。

顺便说一句,你可以在一条线上完成大部分——不需要有多个替代品:

var questionText = questionText.replace(/((<span'b.*?>)|(<'/span>)|('d+))/ig, "");

这将与代码的前三行执行相同的操作。(当然,如果你不想去掉数字,你需要按照答案的第一部分去掉|('d+)

[编辑]

请回复您的评论,即您希望替换第一个整数,但不替换后续整数:

执行此操作的正则表达式字符串在很大程度上取决于可能输入的外观。问题是您给了我们一些随机的HTML代码;从中我们不知道你是否期望它总是以这种精确的格式(即有内容的几个跨度,后面跟着一点以保持(。我认为情况就是这样。

在这种情况下,整个事情的一个简单得多的正则表达式是替换<span中的所有内容。。。。带空白的</span>

var questionText = questionText.replace(/(<span'b.*?>.*?<'/span>)/ig, "");

这将删除整个<span>标签及其内容,但不保留它们之外的任何内容。

在您的例子中,这将提供所需的效果,但正如我所说,如果不了解更多您的预期输入,很难知道这是否在所有情况下都适用。

通常,使用regex解析任意HTML代码被认为是困难的。Regex是"正则表达式"的缩写,这是一种表示它们擅长处理具有"正则"语法的字符串的方式。Abitrary HTML不是一种"常规"语法,因为它有无限的嵌套级别。我想说的是,如果你有比你提供的简单HTML片段更复杂的东西,那么你最好使用HTML解析器来提取你的数据。

这将匹配完整字符串,并将最后一个</span>之后直到下一个单词边界'b的部分放入捕获组1。您只需要将其替换为组1,即$1

searched_string = string.replace(/^.*<'/span>'s*([A-Za-z0-9]+)'b.*$/, "$1");

捕获的单词可以由[A-Za-z0-9]组成。如果你想在那里有其他东西,只需将其添加到该组中即可。