正在尝试删除尾部文本
Trying to remove trailing text
我有以下代码。我想从中提取最后一个文本(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]
组成。如果你想在那里有其他东西,只需将其添加到该组中即可。
- 如何使用jquery在填充自动完成的值后使文本框只读
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 用程序搜索JQuery数据表中的文本
- jQuery匹配JSON对象的部分文本
- onkeyup无法动态创建多个文本区域
- 如何在下面的ES6循环中获得前面的文本
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 借助asp.net验证或java脚本对多个文本进行验证
- 无法在ajaxStart中更改跨度文本
- 高亮显示时编辑文本大小和颜色
- jquery中的文本框验证
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- Sails.js:同时发布文本输入和一个文件
- 当鼠标悬停在文本中的单词上时显示警报
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 将纯文本URL转换为可单击链接
- 如何使用nodes和.createElement(“b”)将文本加粗
- 正在尝试删除尾部文本