-1

つまり、基本的に私がやっていることは次のとおりです。テキストがあり、そこから URL を取得する必要があります。これは私が使用している正確な正規表現です:

http(s)?://([\w-]+\.[\w-]+)([/\.[\w-]+])*([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?

問題は、 http:// ex.ample"などの URL にも一致することです。等々。http:// ex.ampleの部分だけが必要です。

そのため、URL が次の文字で終わらないように正規表現を更新する必要があります。

."()'<>;

かつ、次の文字列のいずれとも一致しない:

&quot;
&#39;
&nbsp;
&gt;
&lt;

私はそれで2日間ほど立ち往生しています。ありがとう!

4

1 に答える 1

1

以下で十分なようです。

^.*(?<![."()'<>;])$

a;は最後の文字として既に禁止されているため、言及したすべてのエンティティも除外されます。rubular.comでご覧ください。

説明:

(?<![."()'<>;])現在の位置より前の文字と一致することが不可能であることを確認します(アンカー."()'<>;のおかげで、文字列の末尾であることが保証されます) 。$

JavaScript (後読みアサーションをサポートしていない) に行き詰まった場合は、

^(?:.*[^."()'<>;])?$

これは、空の文字列または 1 文字以上の文字列 (最後の文字が."()'<>;;のいずれでもない) のいずれかに一致します。それを確実にするために、否定文字クラスを使用しています。

于 2013-09-15T14:44:57.970 に答える