文字列が指定されたパターンではないことを検出する正規表現がありました:
/\A((?!.*(www|http|@|\.com\b|\.net\b|\.de\b|\.info\b)).*)$/m
これは、「こんにちは、www.test.com」のような文字列がFALSEであることを意味しますが、ここでは、www.example.comという1つのURLを許可したいと思います。
その意味は:
「これはテストです」>TRUE
「これはテストですwww.example.com」>TRUE
「これはテストexample.comです」>TRUE
「これはテストですwww.test.comthis」>FALSE
「これはテストtest.comです」>FALSE
"これはテストtest.comですこのwww.example.com ">FALSE(1つの禁止されたURLが存在するためfalse)
AND演算子を含める必要があるようですが、次のようになります。
(?=.*PATTERN)
しかし、残念ながら私はそれを機能させることができませんでした。
ps:URLを検出するこの正規表現は完全ではないことは知っていますが、私の要件のため、何もないよりはましです。
ありがとう !
編集:私の正規表現はバリデーターにあります:
def self.validates_is_url_and_email_free(*attr_name)
validates_format_of attr_name, {:with => /\A((?!.*(www|http|@|\.com\b|\.net\b|\.de\b|\.info\b)).*)$/m, :message => I18n.t(:not_url_email)}
end