
現在VB6.0の勉強をしております。
すごく初歩的な質問だとは思いながらも、自分で調べられなかったので質問させてください。
テキストボックスに入力された文字列に許可文字以外が入力された場合にエラーとしたいのですが、方法が分かりません。
C言語の用に文字列を添え字指定でループ出来れば良いんですが、VBだと、どのように行うのでしょうか?
一応自分で調べ、似たような質問を見つけたんですが、私の場合は禁止文字が多すぎるので、それを一つずつチェックするのは無謀かなと思いまして・・・・。
http://oshiete1.goo.ne.jp/qa2174793.html
ちなみに許可文字は、半角カタカナと'0'~'9'と'A'~'Z'です。
それ以外の文字が含まれている場合はエラーにしたいです。
どうかよろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
>「正規表現」の部分は「変数」という意味なんでしょうか?
変数名や関数名を漢字にしただけです。お好みで変えてもらって
結構です。
>のような感じでしょうか?
そうです。
>はやはり分けて記載すべきですか?
分けて記載すると正しく動作しません。禁止文字(検出パターン)は
同時に記述しなければなりません。
>「*」や「-」もパターン指定したい
「正規表現の構文」見ました?書いてあるんだけどね・・・
(1)[xyz] x 、 y 、 z のいずれかと一致する
(2)[^xyz] x 、 y 、 z のいずれとも一致しない
今回はこのパターンで"\d"(数字)、"A-Z"(A~Z)、"。-゜"(半角カナ)
という具合で、否定の^があるから、いずれにも該当しない文字を
検索するという意味です。
(3)\(バックスラッシュ)は特殊文字をエスケープします。
「*」と[ ] 内の「-」は特殊文字なので、エスケープが必要です。
と、ここまで書けば正解を書けますよね?
分けて記載するとオカシくなる原因も理解できましたか?
VB6なんだからデバッガでいろいろ試してみて、体で覚えるのが
一番です。
オマケ:"[^\dA-Z。-゜\*\-]"
ご丁寧にありがとうございますm(__)m
「正規表現の構文」見たんですが、いまいち理解出来なくて・・・
詳細に記載していただきありがとうございます!
オマケも参考にさせていただきます。
本当にありがとうございました。
No.6
- 回答日時:
No.4
- 回答日時:
テキストボックスのValidateイベントを活用してみましょう
この場合テキストボックスからフォーカスが外れる時点でチェックが機能します
許可しないデータの入力があるとフォーカスの移動を行いません
VB6のメニューから プロジェクト > 参照設定で
『Microsoft VBScript Regular Expressions 5.5』を設定します
Private sub Text1_Validate(Cancel as Boolean)
dim objRegp as New RegExp
objRegp.Global = True
objRegp.Pattern = "[^\dA-Z。-゜]"
Cancel = objRegp.TEst( Text1.Text )
if Cancel then
MsgBox "入力が不正です"
end if
End Sub
といった具合で …
# 正規表現部分は nda23氏の回答を引用しています
ご回答ありがとうございます。
出来れば、フォーカスロストでのチェックは行いたくないので、参考にさせていただきます。
参照設定の記載はとても参考になります。
ありがとうございました。
No.3
- 回答日時:
正規表現を使うと簡単です。
Function 不許可文字検出(ByVal 文字列 As String) As Boolean
Dim 正規表現
Set 正規表現 = CreateObject("VBScript.RegExp")
正規表現.Global = True
正規表現.Pattern = "[^\dA-Z。-゜]"
不許可文字検出 = 正規表現.Test(文字列)
End Function
不許可文字検出("A0カ")→False 不許可文字を検出しなかった
不許可文字検出("a0カ")→True 不許可文字を検出した
http://msdn.microsoft.com/ja-jp/library/cc392487 …
http://msdn.microsoft.com/ja-jp/library/cc392020 …
この回答への補足
ご回答ありがとうございます。
丁寧に記載していただき、とてもありがたいんですが、「正規表現」の部分は「変数」という意味なんでしょうか?
実際に記載してみました↓
Function CheckPermissionStr(ByVal inStr As String) As Boolean
Dim seiki
Set seiki = CreateObject("VBScript.RegExp")
seiki.Global = True
seiki.Pattern = "[^\dA-Z。-゜]"
CheckPermissionStr = seiki.Test(inStr)
End Function
上記関数の使い方
If CheckPermissionStr(コントロール.Text) Then
不許可文字を検出した場合の処理(エラー)の処理
Else
不許可文字を検出しなかった場合(正常)の処理
のような感じでしょうか?
また、パターン指定ですが、半角カタカナと'0'~'9'と'A'~'Z'
はやはり分けて記載すべきですか?
あと、「*」や「-」もパターン指定したいんですが、どのように記載すれば良いのか教えていただけないでしょうか?
分からない事だらけで質問してしまいすいませんm(__)m
No.1
- 回答日時:
以下のページが参考になると思います。
http://homepage1.nifty.com/rucio/main/Samples/vb …
この実装方法は、テキストボックスにキープレスイベントを実装し、
その中で押されたキーを判定するものです。
指定されたキーでなければテキストボックスに入力されません。
サンプルを参考に、半角英数と半角カタカナ、それと
文字を削除するためのバックスペースを許可キーにして下さい。
※この方法ではコピー&ペーストで貼り付けられたデータに対して
チェックを行うことができません。
最終的に1文字ずつチェックする仕組みを作成するか、
貼り付けを禁止するコントロールを作成するか、
その他なんらかの対策は必要になると思います。
この回答への補足
ご回答ありがとうございます。
申し訳ございません、私の説明不足なのですが、チェックはコマンドボタン押下時に行いたいです。
入力そのものを不可能にするのではなく、入力された後で、文字列中の全ての文字に対してチェックを行いたいと思っております。
URLはとても参考になります。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA/ Formatで文字列が...
-
VBAによる第3、4水準文字の判定...
-
JavaScriptでフォームの入力項...
-
VB.NET2003 テキストボックスに...
-
正規表現について
-
外字のチェック
-
「終了していない文字列型の定...
-
文字数の制限について
-
エクセル 半角英数6文字以上 ...
-
javascript 文字列の最後から1...
-
CListCtrl の特定のセル(アイ...
-
正整数の半角数字かどうか判定する
-
正規表現について
-
JSPの処理の途中で、JavaScript...
-
PowerPointで時計表示
-
ASP(VBS) ←→ JavaScript の変数...
-
if(1){...}とはどういうことで...
-
javascript で外部サイトにデー...
-
以下のコードを実行しても、オ...
-
アクセスのフォームでタイマー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAによる第3、4水準文字の判定...
-
エクセルVBA/ Formatで文字列が...
-
正整数の半角数字かどうか判定する
-
VB.NET2003 テキストボックスに...
-
「終了していない文字列型の定...
-
文字認証の問題
-
エクセル 半角英数6文字以上 ...
-
助けてください!出来ないと解...
-
入力チェック
-
VBを使ってのタイピングについて
-
Visual Basic 6.0 のテキストボ...
-
入力された文字を1文字ずつチ...
-
文字列の検索
-
javascript 文字列の最後から1...
-
メルアドをチェックする正規表現?
-
脳内メーカーや自己紹介工場
-
入力文字を瞬時に変える
-
AccessVBAで教えて下さい。
-
replaceで正規表現を利用したい
-
正規表現
おすすめ情報