0

段落内のすべてのプレーンアドレスをリンクに変換する置換を行うにはどうすればよいですか?

問題は、アドレスでピリオドが有効であるが、アドレスが文の終わりにある可能性があることです。

テスト文字列:

The link is: http://www.google.com/pants.  And that is the link.  

httpからパンツまでグループ化する必要があります。(プレーンテキストであり、htmlにする必要があります。)

この正規表現はズボンの後の期間をつかむので悪いです:

(^|[\n ])([\w]+?://[^\s]*)

先読みを行う必要があると確信していますが、それを^\s文字セットに入れることはできません。ifthenelseをしようとしても私は逃げました。

これが私の出力です:

$1<a href=\"$2\" target=\"_blank\">$2</a>

ねえ、これを読んでいる人。このサイトを知っていることを確認してください:http://gskinner.com/RegExr/それは支配します。それが私が正規表現を正しく取得する唯一の理由です。

4

2 に答える 2

1

URL にスペースがなく、その後にスペースまたは文字列の末尾があると仮定します。

str = str.replace(
    /(https?:\/\/\S+?)(?=\.?(\s|$))/g,
        '<a href="$1" target="_blank">$1</a>' );

'http[s]://' とスペース以外の文字を可能な限り数回キャプチャし、オプション.でスペースまたは文字列の末尾を先読みします。

URL の末尾にある他の句読点を除外したい場合は、それに応じて正の先読みを変更できます(?=[;:!,.]?(?:\s|$))

上記の正規表現は、有効なURLのみに一致することを意図\Sしたものではないことに注意してください。[\w/.-]単語文字および.-/.

完璧な URL 検証正規表現を求めて

于 2013-01-23T17:31:15.587 に答える
0

これらの URL 正規表現パターンのパターン:

^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$

^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$

このように使用できます

str = str.replace(PATTERN/g,
        '<a href="$1" target="_blank">$1</a>' );

http://regexlib.com/でそれらの多くを見つけることができます

于 2013-01-23T17:45:49.147 に答える