dポイントプレゼントキャンペーン実施中!

ASP.NET(VB)での入力チェックのために、

半角英数字「0~9」「a~z」「A~Z」と、ハイフン「-」からなる文字列
(ただし、半角英数字「0~9」「a~z」「A~Z」はそれぞれ少なくとも1個ずつ含む)

の正規表現での表し方が知りたいです。


 How To: ASP.NET への入力を制約するために正規表現を使用する方法
 http://www.microsoft.com/japan/msdn/enterprise/p …

 (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$
 8から10文字で、最低1文字の数字と1文字の英字を使用し、特殊文字を使用してはいけません。


上記を参考に、
(?!^[0-9]*$)(?!^[a-z]*$)(?!^[A-Z]*$)^([a-zA-Z0-9])$
こんな感じかなぁと試してみたのですが、ダメでした。
そもそも「!」の意味が分かりません。否定でしょうか??

A 回答 (3件)

 (?!^[^0-9]*$)(?!^[^a-z]*$)(?!^[^A-Z]*$)^([a-zA-Z0-9-]+)$


でどう?試してないけど…。

でも、無理して1つの正規表現で表さなくても、
「0~9」が含まれているかどうか、「a~z」が・・・
と一つ一つチェックしても良いのでは?

> そもそも「!」の意味が分かりません。否定でしょうか??
 (?!regexp)
で否定先読みを意味します。
http://www.kt.rim.or.jp/~kbk/regex/regex.html#NE …

なお^は括弧内でも行頭の意味です。
(ANo.1は[^abc]との混同?)
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
リンク先も大変参考になりました。

お礼日時:2007/05/25 22:59

以下のテキストで検証



ABCDEFG
abz3
-3aZGcE
xa_DC
agle40g
3920710
Da3-XcgE
2gE

No1のパターンでは条件を満たさなかった("xa_DC"以外ヒット)
No2のパターンでは希望通りのヒットをする模様
    • good
    • 1
この回答へのお礼

アドバイス&検証ありがとうございました。

お礼日時:2007/05/25 23:01

^[a-zA-Z0-9\-]*[a-zA-Z0-9]{1,}[a-zA-Z0-9\-]*$ではだめですかね?



^が括弧内で否定の意味を持ちます。
括弧の外であれば^は行頭の意味になります。
!は・・・私の持つ知識では単なる文字だと思うのですが・・・
英字の中に英字記号が含まれているという解釈だと思います。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。

お礼日時:2007/05/25 22:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!