• ベストアンサー

VBでの表現

Perlでは以下のような正規表現をしたいのですが if($TextBox !~ /[a-zA-z0-9]){ ~~~ } VBではどのように正規表現をするのでしょうか よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

VB6やVBAでは Microsoft VBScript Regular Expressions 5.5 参照設定が必要なようです。VB6でも http://support.microsoft.com/kb/818802/ja VBAで http://codezine.jp/article/detail/1655 ーーー Sub test01() 'Microsoft VBScript Regular Expressions 5.5 参照設定 Dim regEx As Object Set fso = CreateObject("Scripting.FileSystemObject") Set regEx = New RegExp Str1 = Worksheets("Sheet1").TextBox1.Text regEx.Pattern = "[a-zA-Z0-9]" regEx.Global = True If regEx.Test(Str1) Then MsgBox Str1 & " には半角英数字があります" Else MsgBox Str1 & " には半角英数字はありません" End If End Sub ーー ただし、参照設定はしない場合は Sub test02() 'Microsoft VBScript Regular Expressions 5.5 参照設定はしない Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") Str1 = Worksheets("Sheet1").TextBox1.Text regEx.Pattern = "[a-zA-Z0-9]" regEx.Global = True If regEx.Test(Str1) Then MsgBox Str1 & " には半角英数字があります" Else MsgBox Str1 & " には半角英数字はありません" End If End Sub ーー エクセルVBAでやったので、 Worksheets("Sheet1").TextBox1 となってますがVBの場合はWorksheets("Sheet1").を取ってしまってください。 ==== VB。NET系では http://park5.wakwak.com/~weblab/tipsSeikiHyogen5.html Public Class Form1の前に Imports System.Text.RegularExpressions ーー フォームにtextbox1とコマンドボタンCommandButton6(私の場合たまたまこうなっただけ)を設け Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click '前後の空白除去 Me.TextBox1.Text = Trim(Me.TextBox1.Text) '郵便番号チェック If Regex.IsMatch(Me.TextBox1.Text, "^[0-9]{3}[\-]?[0-9]{4}$") Then MsgBox(Me.TextBox1.Text + " が入力されました") Else '入力エラー MessageBox.Show _ ("9999999または999-9999の形式で入力してください", "入力エラー") End If Me.TextBox1.Focus() End Sub をPublic Class Form1と End Class の間に入れる。 ーー 一応簡単なテスト済みです。 ーー ややこしいことです。

taporu
質問者

お礼

すいません、自己解決しました 今後参考にさていただきます ありがとうございました

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

VBにもVB6/VBA/VBS系とVB.NET系があります。 メソッド名や使い方が違いますが、正規表現自体は同じです。 【VB6系】 Dim RegExp Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = "[a-zA-Z\d]" If Not RegExp.Text(TextBox.Text) Then 【VB.NET系】 Imports System.Text.RegularExpressions If Not Regex.IsMatch(TextBox.Text, "[a-zA-Z\d]") Then

taporu
質問者

お礼

すいません、自己解決しました 今後参考にさていただきます ありがとうございました

関連するQ&A

  • 正規表現で@を使う場合は\@とするべきか@とするべきか悩んでいます。

    正規表現で@を使う場合は\@とするべきか@とするべきか悩んでいます。 両方とも構文エラーが起きないのでその時点で?ですが .は\.としないと正規表現ではドット文字を認識しないのはわかりますが、正規表現の@はどうすればよいのでしょうか? Perl自体@も配列なので\@つけた方が・・・ よろしくお願いいたします。 $x = "test@example.com"; if ( $x =~ /[^a-zA-Z0-9\.\-\_@]/) if ( $x =~ /[^a-zA-Z0-9\.\-\_\@]/)

    • ベストアンサー
    • Perl
  • メールアドレスの正規表現

    メールアドレスの正規表現 正規表現の勉強をしています。下記のURLのメールアドレスの正規表現の一部が理解できません。 http://hodade.adam.ne.jp/seiki/page.php?s_mail ^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$ この中の「[a-zA-Z]{2,4}$」の部分がわかりません。 行末が英文字2以上4以下というのは何を表しているのでしょうか? なぜ2以上4以下になるかが理解できません・・・ 宜しくお願いします!!

  • 正規表現

    正規表現の使い方を教えて下さい。 下記のソースでは、oPerl5Util.matchメソッドから戻って来ません。 正規表現文字列が悪いのか それともメソッドの呼び方の手順などが悪いのか 指摘して下さい。 import org.apache.oro.text.perl.Perl5Util; public class clsTestMain {  public clsTestMain() {}  public static void main(String[] args) {   clsTestMain clsTestMain1 = new clsTestMain();   Perl5Util oPerl5Util = new Perl5Util();   String sPattern = "/[0-9a-zA-Z_!#$%&'*+-/=?^`{|}~]+(.[0-9a-zA-Z_!#$%&'*+-/=?^`{|}~]+)*@[0-9a-zA-Z-]+(.[0-9a-zA-Z-]+)*/";   String sTaget = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@.jp";     try {    boolean bResult = oPerl5Util.match(sPattern,sTaget); // ここで処理が止まる    System.out.println(bResult); // ここにも来ない   } catch (Exception oException) {    oException.printStackTrace(); // ここにも来ない   }  } }

    • ベストアンサー
    • Java
  • 秀丸での正規表現:複雑な条件を指定する場合

    秀丸エディタの強調表示設定を正規表現を使用して使用しています。 [a-zA-Z][a-zA-Z0-9_]+\s+[a-zA-Z][a-zA-Z0-9_]+ という正規表現でマッチさせたいのですが、else if というケースでもヒットすると思います。これを例外としてマッチさせたくない場合、どういった記述になるのかが思いつきません。直接的な答えでなくてもいいので、何か解法のヒントなどありましたらご指南いただけませんでしょうか。 よろしくお願いいたします

  • VB2005で、正規表現を使いたい

    VB2005で、正規表現を使いたいのですが、Basp21など使わずに.NET標準で備わっているPerl互換のようなものはありますか? VBで正規表現に詳しいサイトや書籍などありましたらご教授ください。

  • 正規表現で行ではなく単語のみをファイル化したい

    正規表現で電話やアドレスを検索するとその行丸々表示されてしまいます。 [例]'[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+' [結果] 何々、xx@aa,bb,cc 正規表現の単語部分(何々、を除いた部分)だけを取り出すにはどうすればいいのですか お願いします。

  • どなたかこの正規表現を変更してくれませんか?

    正規表現の素人で困っています。 s/(http:\/\/[0-9A-Za-z]+[\-\.\/0-9A-Za-z_~]*[\/0-9A-Za-z]+)([\x80-\x9f\xe0-\xfc].)?/<A HREF="$1">$1<\/A> という正規表現が「引数付きURLの引数部分(?より先)は無視する」 という内容になっていまして、?より先も含めるようにしたいのです。 現状だと以下のURLを例に http://test.japan.com/test.php?d=404861&c=c6 http://test.japan.com/test.php test.phpまでしか拾ってくれません。 どの様に書き換えればいいのでしょうか?

  • 秀丸の正規表現

    秀丸の正規表現 http://pc.dearie.jp/hidemaru/replace/14.html 上記URLでメールの正規表現について解説があります。 [A-Za-z0-9\-\.\_]+@[A-Za-z0-9\-\_]+\.[A-Za-z0-9\-\.\_]+ この正規表現でメールの検索をおこなっています。この正規表現は理解出来ます。 .*([a-z0-9\-\.\_]+@[a-z0-9\-\_]+\.[a-z0-9\-\.\_]+)([^a-z0-9@\.\-\_]+).* キャプチャを使って正規表現でメールアドレスをマッチしているのは理解できます。 なぜ置換で、「\1,」とやっても、メールアドレスのみを取得できないのでしょうか? 実際に秀丸エディタを使ってやってみましたが、メールアドレスのみ取得することができませんでした。 検索ではメールアドレスにマッチするのに、なんでキャプチャが正しく動かないのかがわかりません・・・

  • 正規表現で入力チェックするには。

    正規表現を使用して入力チェックをしようと考えていますが特殊記号文字がうまくいきません。 [0-9a-zA-Z]で英数字はチェックする事ができたんで下記の特殊文字を指定するとエラーになってしまい困っています。 「!"#$%&'()=~|`{+*}<>?_-^\@[;:],./」 ロジックは以下のように記述しています。 Pattern p = Pattern.compile("[0-9a-zA-Z!\"#$%&'()=~|`{+*}<>?_-^\\@[;:],./]"); Matcher m = p.matcher("文字列"); if(m.matches() == true){   System.out.println("1"); } else{   System.out.println("2"); } ※「\」と「"」はエスケープしています。 下記のエラーメッセージが表示されてなんとなくですが正規表現でエラーになっているのはわかるんですが・・・ Illegal character range near index 32 [0-9a-zA-Z!"#$%&'()=~|`{+*}<>?_-^\@[;:],./]                       ^ 申し訳ありませんがアドバイスいただけませんでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Java
  • VB6でPerl互換の正規表現を使いたい

    VB6でperl互換の正規表現を使いたいのですが可能でしょうか?

専門家に質問してみよう