先頭に半角英文字(大文字小文字問わず)が少なくとも1文字あり、
その後に半角英文字(大文字小文字問わず)か半角数字が続き、
結果としてすべての長さが1以上16以下となっていることを判別するには、
正規表現でどのように記述すれば良いでしょうか。
知識が浅く、
^[A-Z][A-Z0-9]{1,16}$
みたいに書いてみたのですがうまくいきません。
すみません。よろしくお願いします。
参考までに、試したコードは、以下になります。
Visual Studio でForm1ウィンドウを作り、
テキストボックスを2つ(textBox1, textBox2)とボタン(button1)を貼ったものです。
textBox1には正規表現の文字列、textBox2にはチェックしたい文字列を入れます。
ボタンが押されるとbutton1_Clickイベントが起こり、Regex.IsMatch()で判定します。
例えば、正規表現に「^([A-Z]+[A-Z0-9]){1,16}$」
チェック対象に「ABc01235」を入れると、
自分的には、
・先頭が英文字
・続いて英文字と数字
・全体をかっこで囲ってそのながさが1以上16以下の指定
としているつもりですが、下記で"ERROR!!"のメッセージとなります。
Regex.IsMatch()関数に"RegexOptions.IgnoreCase"パラメータを与えているので、
英文字の大文字小文字は区別されないと解釈しています。
using System; using System.Text.RegularExpressions; // Regex, RegexOptions, 正規表現... using System.Windows.Forms; namespace Test0 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string validChars = textBox1.Text; string code = textBox2.Text; if (!(Regex.IsMatch(code, validChars, RegexOptions.IgnoreCase))) { MessageBox.Show("ERROR!!"); } } } }
回答4件
あなたの回答
tips
プレビュー