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

时间:2016-09-20 21:52:56

标签: html regex regex-greedy

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

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

其中[任何]可以是任何字符的0或更多。

元标记可能会也可能不会被新行分隔,所以这也没关系:

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

这是我现在的正则表达式:

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

如果标签位于同一条线上,或者标签带有换行符,则无效,但不适用于多行标签。

如何才能让它与 这些元标记在线或多行匹配?

1 个答案:

答案 0 :(得分:1)

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

怎么样?

请参阅:https://regex101.com/r/iJ7fT8/2