正则表达式匹配多行字符串中的多个元标记

Regex match multiple meta tags in multi line string

我想验证多行字符串是否只包含我指定格式的元标记。例如,它只能包含以下一项或多项:

<meta property="og:[anything]" content="[anything]"/>

其中 [anything] 可以是任意字符的 0 个或多个。

meta 标签可以用新行分隔,也可以不用,所以这样也可以:

<meta property="og:[anything]" content="[anything]"/>
<meta property="og:[anything]" content="[anything]"/>
<meta property="og:[anything]" content="[anything]"/>

这是我当前的正则表达式:

^(?:<meta [^>]*property=[\"']og:.+[\"'] [^>]*content=[\"']([^'^\"]+?)[\"'][^>]*>)(?:\n*)$

如果标签在同一行,或者如果有一个带有换行符的标签,它会起作用,但不适用于多行的标签。

如何让它匹配 这些元标记,无论是在线还是多行?

怎么样^(?:\s*<meta\s*property=["']og:.+?["']\s*content=["'].+?["']\s*\/>\s*)+$

参见:https://regex101.com/r/iJ7fT8/2