1

CSS プロパティからサイズを取得する正規表現を作成しました。

/(([+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i

しかし、何らかの理由で意図したとおりに機能しません。たとえば、次を実行すると:

preg_match_all('/(([+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i', 
"border-bottom:1px solid #99999;", $matches);

以下を出力します。

1px
99999;

しかし、私は 1px の値だけを返したいと思っています。

上記を返す理由は理解していますが、色の値ではなくサイズのみを返す方法がわかりません。次の否定的な後読みを使用してみましたが、どちらも機能していません。

/(((?<!#\d{3}|#\d{6})[+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i

複数のサイズ値 (マージン) を持つことができる CSS プロパティに preg_match_all を使用したいと考えています。

この正規表現を取得してサイズ値のみを返す方法を知っている人はいますか?

ご協力いただきありがとうございます!

4

2 に答える 2

1

わかりました、この質問をしてから5分後に私はそれを理解しました. 肯定的な後読みを使用して、" " またはセミコロンをチェックします。

'/((?<=\s|:)([+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i'
于 2012-06-08T04:39:12.393 に答える
0

を削除して#\d{3}|#\d{6}みてはregexpいかがでしょうか。

preg_match_all('/(([+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i', "border-bottom:1px solid #99999;", $matches);
于 2012-06-08T04:12:45.193 に答える