2016-06-15 11 views
-1

私はpost-IDを参照できるコメントボード機能を作成しています。これは正規表現によって関連する投稿にハイパーリンクするよう自動設定されます。PHP preg_replaceは、特殊文字の後の数字に一致します

記事の参照は、二重矢印のASCII記号使用して、以下のようにフォーマットされていますハイパーリンクされるように»1234

6つの数字が最大の参照にするために、二重の矢印をたどることができますが、そう»1234567だろうではないハイパーリンクが、 »1,»12,»123などが挙げられる。

正規表現でどうすればいいですか?

+0

おそらく '^»\ d {1,6} $'ですか? '»1234567'は文字列の唯一の入力ですか? – chris85

+0

いいえ、文字列にも他のテキストがあるかもしれませんが、参照に結合されている場合はハイパーリンクが失敗します。 – user1228907

+0

'参照に参加しましたか? '»123'は常に末尾のスペースを持つか、文字列の終わりですか? – chris85

答えて

1

マッチの特殊文字1-6桁の数字が続き、その後、ワード境界に続いて、それが他の文字列と連結だ場合、それが一致しなくなります。

»\d{1,6}\b 
1

»は矢印文字に一致し、\dは0と9の間の数字に一致し、{1,6}は少なくとも1と最大6の数字が続くはずです。単語全体のみを一致させたい場合は、正規表現の表と裏に単語境界を使用できます(\b)。文字列全体がこのパターンのみで構成されているかどうか確認する場合は、最初に^、末尾に$というアンカーを使用できます。

»\d{1,6} 
+0

アンカーがないか、 '\ D'、'»1234567'も一致します。 – chris85

+0

最後に '(?!\ d)'を追加するだけです –