javascript - 为什么表达匹配整个句子

标签 javascript regex

我是使用这个 website 的正则表达式新手但面临一个问题。场景是尖括号中有一些元素,每个元素都有一个属性,每个元素后面有一个句点 (.)符号是这样给出的。

<a value = "GoodVal">.<b value = "BadVal" size = "10">.<c height = "auto">.<d size = "3">.<e strength = "200%">.<f a1 = "1" a2 = "2" a3 = "3"></f></e></d></c></b></a>

我的表情是:<a.*?>\.<b.*?>\.<d.*?>但为什么它被认为是匹配的。在b element之后的句子中c element不写d元素。

最佳答案

首先,please see here for why not to use regular expressions to parse XML/HTML.

但仍然回答你的问题: . 匹配(几乎)任何字符(但默认情况下没有适当的修饰符则不匹配换行符),这就是 .* 匹配的原因b 元素的右括号和 d 元素的起始括号之间的所有内容。

使用像http://www.regextester.com/?fam=96920这样的页面总是一个好主意。可视化您的表达式,特别是如果您刚开始使用 RegEx。

要按照您的要求仅包含 a、b 和 d 标签,您可以使用以下正则表达式:

/<[abd].*?\./g

另请参阅regextester 。 JavaScript 中需要使用 g 修饰符来捕获所有匹配项。您还可以匹配所有标签,然后在迭代它们时决定保留哪些标签,不保留哪些标签。

关于javascript - 为什么表达匹配整个句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42256445/

相关文章:

javascript - 在javascript中输出childNode值

javascript - 在构造函数变量上定义对象时 JavaScript 中会发生什么

javascript - 使用 RegEX 匹配 URL 模式,无效量词?

MySQL 在 SELECT 中提取多个子字符串,任意次数

python - 对于多种条件,在 Python 的正则表达式中获取内部字符串的正确方法是什么

Javascript 不显示非标准字符

javascript - 关闭后 jquery Accordion 仍然处于选中状态

php - 检查字符串是否包含任何单词

regex - 不同版本的 tcl 给出不同的答案

javascript - 比较父级中的列表以匹配文本,将类添加到匹配文本,页面上的多个