出産前後の痔にはご注意!

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])$
こんな感じかなぁと試してみたのですが、ダメでした。
そもそも「!」の意味が分かりません。否定でしょうか??

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q正規表現でパスワードのチェック

8文字以上で、アルファベット大文字、アルファベット小文字、記号を最低1つずつ含んでいるか、というチェックを正規表現で行いたいと考えています。
以下のようにしているのですが、うまくいきません。間違っているのでしょうか?
^(?=.{8,})(?=[a-z]+)(?=[A-Z]+)(?=[~!#$%^&`*+;:"'?/|{}.=_,-]+).+$

また、使用しているのは、Jakarta-OroのPerl5Utilです。
使用しているライブラリが悪いのでしょうか?

Aベストアンサー

Perl5Utilでは未検証です。(一応VB.NETで多少やりましたが)
http://lukewarm.s101.xrea.com/RegEx.html
>(?=regexp)はregexpにマッチする文字列の直前にマッチするようなので
例えば
(?=a)(?=A)

Aabにはマッチしないと思う。
最初の
(?=a)
でaの直前がマッチして,(?=A)で残っているのがabだからAがなくて通らないんじゃないかな。
それを考えて,
^(?=.{8,})(?=.*?[a-z]+)(?=.*?[A-Z]+)(?=.*?[~!#$%^&`*+;:""'?/|{}.=_,-]+).+$
という風に毎回.*?をチェックするようにしてみた。どうだろう?

#ただ,見づらいんで俺は正規表現嫌いだけどね。(BNFの方が好き)

QVBAで英数字入力チェックしたい。

いつもお世話になります。

いままで、ある項目の入力チェックを数字のみで
行っていたところ【IsNumeric】を英数字で行いたいのですが
いくら調べても見当たりません・・・

知っている方、どうかご指南ください。
よろしくお願いします。

Aベストアンサー

IsAlphaが無いですね。
チェック用に、半角に統一して(StrConv)文字列を作り、
1字づつ、JISコードの65-90、97-122をエラーにするチェックを行い、上記作った文字列はチェック後は使い捨てる。
こういうルーチンを作るより他ないでしょう。
記号なども含めて考える。
ただ記号は十分検討が必要です。制限しすぎると、運用後にダウンとか、大騒ぎになる恐れをこめてます。

Q文字列の後ろから必要分だけ削除したい。

例1 Dim str As String = "あいうえお1234"

文字列の中の1234だけ削除したい場合は、
str = str.Remove(5,4)
という風に、5文字目の後から4文字削除にすればよいのですが、

例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、
文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。

.NET環境です。

Aベストアンサー

Length(str)で文字数を取得できますので、後ろから4文字目は先頭から何文字目かは計算できると思いますが、どうでしょうか?

Q文字列から英数字のみを抽出する関数

文字列から英数字のみを抽出する関数を教えていただきたいです。

セルの文字列にはひらがな、カタカナ、数字、アルファベット、記号等を含みます。

色々調べてはみたのですが、数字のみを抽出する関数の説明はたくさんありますが、
アルファベットも含むとなると見つかりませんでした。

数字0~9とアルファベット27個の計37個の文字なので、どうにか関数でできると思うのですが。

具体的には下記のようにしたいのです。

●A列
今日iPhone5をauで購入
最新のNEWSを15時~PCで見る 
Moonshotを生み出す「Google X」

●B列にこう表示したいのです。
iPhone5au
NEWS15PC
MoonshotGoogleX


スペースは残ったままでも結構です。

詳しい方、どうかよろしくお願いいたします。

Aベストアンサー

>数字のみを抽出する関数の説明はたくさんありますが

文字列の中に数字が「一塊だけ」ある場合の説明は多分沢山ありますが、(今回のご質問のように)「文字数字文字数字文字数字」と不定数入り混じってる場合の数式は、全く見つからなかったと思いますよ。

たとえば「英数字が最大限3カタマリまで」といった制約を付けて無理矢理関数をくっつける事は出来なくはありませんが、正直不細工ですし、そもそもあんまり現実的じゃありません。



手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

public function myf(a) as string
 dim i as long
 for i = 1 to len(a)
 if mid(a,i,1) like "[0-9a-zA-Z ]" then
  myf = myf & mid(a,i,1)
 end if
 next i
end function

ファイルメニューから終了してエクセルに戻る

任意のセルに元の言葉を記入し、
=myf(A1)
のように計算する。

>数字のみを抽出する関数の説明はたくさんありますが

文字列の中に数字が「一塊だけ」ある場合の説明は多分沢山ありますが、(今回のご質問のように)「文字数字文字数字文字数字」と不定数入り混じってる場合の数式は、全く見つからなかったと思いますよ。

たとえば「英数字が最大限3カタマリまで」といった制約を付けて無理矢理関数をくっつける事は出来なくはありませんが、正直不細工ですし、そもそもあんまり現実的じゃありません。



手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モ...続きを読む

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???

Q半角記号、全角記号を含む正規表現を作れなくて困っています。

システムの入力チェックのために
!"#$%&'()=~|`{+*}<>?_-^\@[;:],./
!”#$%&’()=~|‘{+*}<>?_-^¥@「;:」、。・

などの半角記号、全角記号を1個以上含むとtrueを返す
正規表現を作りたいのですが、うまくできなくて困っています。
以下の[ ]に入れる値で、何か良いものはありませんか?


Boolean b = Pattern.compile("[ ]+").matcher(input).matches();

Aベストアンサー

>全角はエスケープシーケンスがいらないのでしょうか?
いらないです。エスケープする必要がないので。

>エスケープシーケンスをあまり使いたくないので、範囲指定する方法を知りたいのです。
うーん。全角の記号はエスケープする必要がないけど、「範囲指定」だとUnicodeで範囲指定できるかも。
ただ、全角の記号がUnicodeで連続になっていればいいけど、(おそらく)なっていないだろうから。
正規表現の読みやすさ?を考えてのことだったら…
苦しいかもしれないけど
 String hankaku = "\\p{Punct}"; //半角記号
 String zenkaku = "!”#$%&’()=~|‘{+*}<>?_-^¥@「;:」、。・"; //全角記号
 boolean b = Pattern.compile("["+hankaku+zenkaku+"]+").matcher(input).matches();
ってな感じでどうでしょう…。

Q正規表現で、英数記号を含むパスワードバリデーション

Ruby on Rails を学習中です。

パスワードは、
「長さは8文字以上で、英数記号全てを含まなければならない」
としたいと思います。

正規表現はどのように書けばよろしいでしょうか?
VALID_PASSWORD_REGEX = /\A[\w]/i
validates :password, length: { minimum: 8 }, format: { with: VALID_PASSWORD_REGEX }

[a-zA-Z] && [\d] && [!|@|#|$|%] と書けると良いのですが、
正規表現では and 表現が難しいようなので、困っています。

助けて頂けないでしょうか?
どうぞよろしくお願いいたします。

Aベストアンサー

こんにちは

> 「長さは8文字以上で、英数記号全てを含まなければならない」


Railsはわかりませんが以下の正規表現で如何でしょうか?

/(?=.{8,})(?=.*\d+.*)(?=.*[a-zA-Z]+.*).*[!@#$%]+.*/


VALID_PASSWORD_REGEXに"8文字以上"の条件をいれる必要がなければ

/(?=.*\d+.*)(?=.*[a-zA-Z]+.*).*[!@#$%]+.*/

"記号"の部分は使用する記号を適宜追加してみてください。

Qある文字列が全て数字であるかどうかをチェックするには?

一番効率のよいと思われる方法を教えて下さい。
一つ一つ数字であるか見る方法しか思いつきません。

Aベストアンサー

Sub test01()
Dim a As String
a = InputBox("数=")
For i = 1 To Len(a)
If Asc(Mid(a, i, 1)) < 48 Or Asc(Mid(a, i, 1)) > 57 Then
MsgBox i & "字目でNon-Numeric"
Exit For
End If
Next i
End Sub

QVBとVBAの違い

お世話になります。

現在、ExcelVBAで機械設計の計算をさせようと思い勉強しているのですが、VBとVBAの違い(VBと比較したとき、VBAできること、できない事)の境目?がいまいち判りません。
まだまだ勉強中で困惑しております。このままExcelVBAを勉強していく物か、VBについて勉強していくか迷っています。このままExcelVBAを勉強してExcelVBAを理解すれば判断できるかと思うのですが、畑違いの勉強になってしまわないかと心配です。

やりたいことは、各種計算の簡略化です。
現在は、関数電卓で行っていますが、これをパラメータを入力すると計算結果が出る。このような物を作りたいと思っています。

長くなってしまったのでまとめると、
1、VBAとVBの違い
2、ExcelVBAで設計計算が可能か
あと、
プログラムにより計算させるときに、最適なプログラム(JavaとかPHPとかHTML等など・・・)お勧めのプログラムがありましたらアドバイス頂けたらと思います。

Aベストアンサー

1. VBAとVBの違い

VBは単体で動作するアプリケーションが作れますが、VBAはOfficeが必要です。
また、VBAはOfficeの環境が使えるので、Excel等を使った入出力の機能が既にできていますが、VBではある程度自分で作る必要があります。また、費用的な面でVBは購入しないと使えませんが、VBAはOfficeがあれば使えますので、既にExcelなどを導入されているならば、追加の費用が必要ありません。
もし、複数の人間で作ったプログラムを利用され、かつその中にOfficeを持っていない人が含まれるのであればVBAではできませんので、VBが必要です。

2. ExcelVBAで設計計算が可能か

可能です。また、多分VBAを使わなくてもExcelの関数でもある程度のことが可能だと思われます。お持ちの関数電卓の桁数にもよりますが、相当な高精度が必要でない限り大丈夫です。

文面からすると、プログラミング未経験のようですが、やりたいことが明確なので、Excelをお持ちであればVBAで始めてみてはいかがでしょうか。他の言語(Java, C, PHP...)でも可能でしょうが、中には環境を用意しなくてはならなかったり、本質である計算以外に気にしなくてはならないことが多く、初心者にはとっつきづらいのではないかと考えます。

VBAからVBへの移行、VBからVBAへの移行はどちらも可能ですし、VBAからVBへの移行は多少時間がかかるかもしれませんが、VBよりVBAから始める方が楽なので、どちらに優越があるとは一概に言えないと思います。一人でちょっと使う程度や勉強用なら、ExcelVBAをお勧めします。
しばらくすると、ExcelVBAの限界を感じるようになると思うので、そこからVBに移行するというのでも悪くないと思います。

1. VBAとVBの違い

VBは単体で動作するアプリケーションが作れますが、VBAはOfficeが必要です。
また、VBAはOfficeの環境が使えるので、Excel等を使った入出力の機能が既にできていますが、VBではある程度自分で作る必要があります。また、費用的な面でVBは購入しないと使えませんが、VBAはOfficeがあれば使えますので、既にExcelなどを導入されているならば、追加の費用が必要ありません。
もし、複数の人間で作ったプログラムを利用され、かつその中にOfficeを持っていない人が含まれるのであればVBAではで...続きを読む

QDataGridViewでセルクリックイベントを発生させるには

DataGridViewでセルクリックイベントを発生させるには、
デザイナからではCellClickイベントハンドラとなりますが、
プログラムコード上から発生させるにはどのようにすればよろしいでしょうか?

CurrentCellでアクティブセルを変更した時に、そこのセルをクリックさせるイベントが欲しいのですが・・

宜しくお願い致します。

Aベストアンサー

CellClickイベントハンドラの内容を別のメソッドとして作り、アクティブセルを変更した際にそのメソッドを呼び出す方法ではダメなのでしょうか?
どうしてもCellClickイベントを発生させて処理をしたいのでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング