2009-07-30 14 views
1

任意のシーケンスまたは数字、またはリテラル:naと一致したいと思います。 私が使用しています:正規表現 - 私の間違いは何ですか?

"^\d*|na$" 

番号が一致しているではなく、NA。

私の間違いは何ですか?

詳細情報:これは、aspnet c#のテキストボックスの正規表現バリデーターでこれを使用しています。

空白の入力は問題ありません。

+1

あなたが – zakovyrya

答えて

9

式が読まれているので、それが(PCREを想定)です:

"^\d*" OR "na$" 

いくつかの括弧はJIFFでそのの世話をするでしょう。から選択してください(お客様のニーズに応じて):

"^(\d+|na)$" // this will capture the number or na 
"^(?:\d+|na)$" // this one won't capture 

乾杯!

+0

と対戦しようとしている文字列を投稿するといいですね。これはうまくいった。 –

1

おそらく^(?:\d*|na)$が良いでしょう。どの言語/エンジンですか?また、入力コードと、可能であればコードのスニペットを表示してください。

また、新しい行があるため、「na」と一致しない可能性があります。あなたが$アンカーを指定していないので、数字は影響を受けません。

言語と入力の仕方によっては、 "na"と文字列の最後の間に改行があり、複数行一致を有効にしないと$が一致しませんまたは新しい行の文字列を取り除く)。

-2

これは、それを修正するための最良のまたは最もエレガントな方法であるが、これを試していない可能性があります

"^\d*|[n][a]$" 
6

|オペレータはアンカー^$より高い優先順位を持っています。したがって、表現^\d*|na$は、^\d*またはna$と一致することを意味します。だから、これは試してみてください。

^(\d*|na)$ 

または:

^\d*$|^na$ 
関連する問題