2008-09-15 3 views
11

すべての入力文字列を拒否する正規表現を構築することは可能ですか?すべての入力を拒否する正規表現ですか?

+0

なぜここで 'regex'が必要なのですか?' readonly inputs'、if(input.length <0)...、if(!value)のような他のオプションについて考えることができます –

答えて

10

をおそらくこの:

[^\w\W] 

ワット\ - 単語の文字(文字、数字、など)
が\ W -

[W \の反対^ \ w \ W] - 文字クラス - \ wまたは\ Wのいずれかに属している必要があるため、常に失敗します。

別のスニペット:

$.^ 

$は - ライン
の開始位置を主張 -
^文字列の最後に位置を主張します。 - 任意の文字

(?#it's just a comment inside of empty regex) 

空の先読み/背後に動作するはずです:

(?<!) 
+0

空文字列はどうですか? –

+0

クリスコンウェイ、あなたは冗談を言っていますか? :) – aku

+0

いいえ空でない文字列と一致するこれらの正規表現の外観。空の文字列はどうですか?それも可能な入力です。 –

-1

EDIT: [^ \ nは\ rを\ W \ s]は

+0

すべての入力文字列?私はその声明を否定したいと思うかもしれないと思います。 –

+0

これは私が探しているものとまったく反対です。あなたの正規表現はすべてのものを受け入れ、私が必要とするものはすべてを拒否する正規表現です。 – Kasper

+0

Unkwntech、あなたの正規表現は句読記号などに一致します – aku

1

なぜあなたもそれをしたいですか?文章がそのトリックをするならば、簡単なことではないでしょうか?線に沿って何か:

if (inputString != "") 
    doSomething() 
0

[^ \ x00- \ XFF]

-1

まあ、私は理解している場合、私はわからない

、私はいつも文字列にマッチする方法の正規表現を考えていたからです。私はあなたが持っている最高のショットは正規表現を使用していないと言うでしょう。

しかし、あなたはまた、

はそれが役に立てば幸い... ^$または[^\w\s]ような単語/スペースが一致しない正規表現のような空行にマッチする正規表現を使用することができます!

4
(?=not)possible 

?=は正の先読みです。それらはすべての正規表現のフレーバーではサポートされていませんが、多くの場合はサポートされています。

この式では "not"が検索され、同じ位置から始まる "可能"が検索されます(先読みは文字列内で前方に移動しないため)。

+0

それは私の日=を作った)。よくやった;) –

1

私には、間違った方法で問題を攻撃しているように聞こえますが、正確には あなたは解決しようとしていますか?

すべてをキャッチして結果を否定する正規表現を実行できます。 JavaScriptで

例えば:

if (! str.match(/./)) 

が、その後あなただけの[1月-ハニ] @として、代わりに

if (!foo) 

を行うことができますが言いました。あなたが別の正規表現では、このような正規表現を埋め込むために探しているなら

、あなた ではなく$または^を探している、または@ [ヘンリク-n]が述べたように先読みを使用している可能性があります。

しかし、私は、これは「私はXが必要だと思うが、私は本当に必要なのyは」問題のように見える、と述べたように。

0

「正規表現」の意味によって異なります。特定のプログラミング言語やライブラリでregexpsを意味しますか?その場合、答えはおそらくはいです。上記の回答のいずれかを参照することができます。

コンピュータサイエンスのクラスで教えられている正規表現を意味する場合は、答えは「いいえ」です。すべての正規表現はいくつかの文字列に一致します。それは空の文字列かもしれませんが、それは常にの何かと一致します。いずれの場合においても

、私はあなたが何を意味するか、正規表現の種類絞るためにあなたの質問のタイトルを編集示唆しています。あなたが正規表現でいくつかの入力をフィルタリングすると、関数の引数として正規表現を渡す際にそのようなことはおそらく必要になることができた理由の

2

一例です。関数型プログラミングの精神で

は、代数的完全性のために、あなたは「すべてが許可されている」と「何も許可されていません」のようないくつかの些細な主要な正規表現をしたいことがあります。

0

[^]+とする必要があります。

これに添付されたakuのコメントに対する回答として、オンライン正規表現テスター(http://www.regextester.com/)でテストしたので、JavaScriptで動作すると仮定します。私はそれを "実際の"コードでテストしないことを告白する必要があります。 ;)

+1

私は、正規表現エンジンがこれをサポートしているのだろうか? AFAIK、[^]はほとんどのプロセッサではコンパイルされません – aku

+0

JavaScriptでは、 '[^]'は**任意の**文字にマッチします。これは、改行を含む任意の文字にマッチする '[\ s \ S]'イディオムのより簡潔な代替ですが、使用しないでください。 @akuが述べたように、他のほとんどの正規表現のフレーバは、それを構文エラーとして扱います。しかし、より大きな問題は、より長い正規表現の一部として誤解する可能性があるということです。例えば、 '[^] [^]'はJavaScriptの2文字にマッチしますが、PHPでは ']'、 '['、 '^'でない文字のうちの* 1 *にマッチします。 –

5

最高標準regexs(すなわち、すべての入力を拒否全く先読みまたはバック参照)は、これらは

.^ 

$. 

)上記@aku後(ありませんフラットな矛盾:「文字が始まる前の文字列」と「終わりの後に文字が続く文字列」。

注:それは(それが^は、正規表現で...最後のパターンと$の最初に来ることを確認するために非常に簡単です)病気に形成されたとして、いくつかの正規表現の実装はこれらのパターンを拒否している可能性がありますが、私がチェックした少数はそれを受け入れます。これらは、^$が改行に一致するような実装では機能しません。

関連する問題