2017-05-24 3 views
0

1000hz Bootstrap Validatorを使用して、連絡先フォームのフィールドを検証しています。電子メールのフィールドにdata-patternを使用して、フォーマットが正しいことを確認しています。ブートストラップ検証:データパターンに否定的なREGEXを書き込むにはどうすればよいですか?

"data-pattern" => "myemailregexpattern" 

私は電子メールアドレスまたはURLを1つのテキストフィールドで許可しないデータパターン検証を作成したいと考えています。

私はRubyでプログラミングしていますが、通常は以下のようなロジックを記述して、フォーム外のテキストフィールドを検証します。

if params[:message] =~ /myemailregexpattern/i || params[:message] =~ /myurlregexpattern/ 
    display error message 

基本的に私は試合が両方の正規表現パターンが見つかりされていない場合は、それが有効とフィールド値を特定する場所次のような何かをしたいです。ここでは、複数の記事を読んだ後、私は正規表現全体が否定されたすべての例は見つかっていないいくつかの提案参照ブログやウェブサイト上の

"data-pattern" => "**--negate--**myemailregexpattern**--and---**myurlregexpattern" 

OR

"data-pattern" => "**--negate--**((myemailregexpattern)|(myurlregexpattern))" 

。私はlookaroundを使うことができるかもしれないと思ったが、それがうまくいくか、あるいは正規表現を書く方法が明確ではなかった。

+0

比較を否定できない理由はありますか? '=〜'や '!(expression)'の代わりに '!〜'を使ってください。 –

+0

私は見ました|使用された条件のために。私は正規表現内でif-then-else条件の例を見てきました。私は見たことがありません!〜または!正規表現の式で使用されます。私はそれを試み、それがうまくいくかどうかを見ます。 –

+0

正規表現演算子ではありません。私は、正規表現マッチングを実行する外部ロジックについて話しています。多分、あなたがやろうとしていることにもっと文脈を提供すれば? –

答えて

0

正規表現を「否定」する問題の一部は、定義の1つです。まさに "電子メールアドレスではない"ものなのでしょうか?空の文字列ですか? @の文字列では、すべての文字が「電子メールアドレスではない」正規表現に一致しますか?だから、あなたはまだ、否定的なものに加えて、ある種の正の一致条件を持たなければならない。

あなたの正規表現エンジンは否定先読みと後読みをサポートしている場合、あなたはで、何に加えて、それ何かを一致させるために、それらを使用することができ、も他ではないものです。限り何もregexと一致しない.*と一致するよう、

^(?!regex).*(?<!regex)$ 

何も一致します。regexは、あなたが「否定」している正規表現であればここでは、例です。

しかし、それは高度にエンジンに依存し、Javascriptは(例えば)ポジティブまたはネガティブなlookbehindをサポートしません。

関連する問題