regex 在可编辑的范围标记之间获取文本,但不在不可编辑的范围之间获取文本

w9apscun  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(119)

我有这个字符串:

<span contenteditable="false" field="something1">Text I want 1</span>
<span contenteditable="false" field="something2">Text I want 2</span>
<span style="color:#000000;">Text that I dont want.&nbsp;</span>

如何得到一个['Text I want 1', 'Text I want 2']数组?
现在我通过执行以下操作获得所有文本,包括Text that I dont want

/<\/?span[^>]*>(.*?)<\/span>/g

但是,这会得到所有的span标签。我如何得到span contenteditable="false"之间的文本?
更新:尝试使用新的正则表达式

allText.match(/<\/?span.*contenteditable="false".*>(.*?)<\/span>/g)
cetgtptt

cetgtptt1#

我相信问题标题与描述中的内容相矛盾,因为您想要“在span editable tags之间获取文本”,但在您的描述中,“Text I want 1”和“Text I want 2”位于不可编辑的span中。然而,如果您想更改逻辑,您可以在正则表达式或JavaScript代码中交换单词true | false
仍然使用regex,你可以用下面的方法来做:
<\/?span.*contenteditable="false".*>(.*?)<\/span>
如果你想使用JavaScript,你可以这样做:

const editableSpans = document.querySelectorAll('span[contenteditable="false"]')
const editableSpansText = Array.from(editableSpans).map(element => element.innerText)

相关问题