• 締切済み

matches()での正規表現

現在、Stringクラスのmatchesメソッドを使用して、入力値のチェックをしようと思っているのですが、 正規表現で質問をさせてください。 正しいパターンは → 「00XX-XX」です。(Xは任意の数字) 頭は0が2個、Xが2個、ハイフン、Xが2個、です。 これを正規表現で表すと、 「^(00)\\d{2}\\-\\d{2}$」としているのですが、ハイフンの前の\\を除去して、 「^(00)\\d{2}-\\d{2}$」でも結果が変わらない様な気がします。 この二つの違いは何なのでしょうか?? 具体的にどちらかがtrueとなる入力値等があったら教えてください。 よろしくお願いします。

  • Java
  • 回答数1
  • ありがとう数0

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

推測するに, 「正規表現」と書かれているのは「その正規表現を表す文字列」ということでしょうか? 本当に「正規表現」であれば異なりますが, 「正規表現を表す文字列」であれば通常は同じ意味になります. エスケープシーケンスとして意味のない \ は無視されることが普通で, おそらくその結果として \- と - が同じとみなされているのでしょう. ところで (00) とかっこを付けているのはなぜ?

関連するQ&A

  • 正規表現-数字

    VB6で開発しています。 ひとつのテキストボックスがあり(MAXLENGTHが4)、 半角数字or小数点しか入力できないように制御しています。 下記正規表現確認関数で、 00.0~99.9の値のみ認証したいのですが、 (チェック前に Format( XX , '00.0')に変換してます) ○ 3 ○ 3.3 ○ 33 ○ 33.3 × 3.33 × .333 × 333 △ 3.00 → 3.0に変換させる パターンマッチング (\d{1,2}.\d|\d{1,2})ですと 本来×の333がOKとなってしまいます。 正規表現が間違っているのでしょうか? アドバイスお願いします。 関数はこちら Public Function RegExpCheck(ByVal ChkString As String, _ ByVal RegPattern As String) As Boolean '(一部省略) '引数:ChkString 正規表現確認対象文字 ' RegPattern パターン '戻り値:True マッチしている ' :False マッチしていない、あるいは文字・パターンが空白 '(一部省略) Dim reg As New RegExp RegExpCheck = False On Error GoTo RegErr '引数空白チェック・・・空白の場合はFalseを返す '対象文字列 If Trim$(ChkString) = vbNullString Then Exit Function End If 'パターン If Trim$(RegPattern) = vbNullString Then Exit Function End If reg.Pattern = RegPattern If reg.Test(CStr(ChkString)) = True Then RegExpCheck = True End If Exit Function RegErr:

  • javaの正規表現について質問です。

    javaの正規表現matchesに関して質問です。 正規表現を用いて文字列が半角数字のみで出来ているかどうかを判定したいと思っています。 調べたとろこ下記の正規表現で判定できそうなのですが、 正規表現のルールが理解できず困っています。 ------------------------------------------- String aaa = "0123456789"; //パターン1 aaa.matches("^[0-9]{10,11}$"); //パターン2 aaa.matches("^[0-9]+$") ------------------------------------------- パターン1 ^[0-9]   →  文字列の先頭が0~9か判定 {10,11}   →  10~11回繰り返す(繰り返すというのは[0-9]かどうかということでしょうか?)           12文字目に文字を入れた下記文字列でもfalseが返ってきました。           解釈が間違えている?           String aaa = "0123456789a"; $      →  文字列の最後が[0-9]を10~11回繰り返しているかどうか? パターン2 ^[0-9]   →  文字列の先頭が0~9か判定 +$ →  文字列の最後が???? すいません自分で書いてて混乱してきました。 どなたかアドバイス下さい。

    • ベストアンサー
    • Java
  • 正規表現について

    お世話になっております。 現在、JAVAで開発を行っていますが、わからないことがあります。 1-1-1-01,1-2-1-01,1-3-1-01といった様な、数字+"-"ハイフンの文字列8桁が入力されているのかどうかのチェック処理が上手くできません 。 if(Pattern.matches("\d{1}-\d{1}-\d{1}-d{2}")){ } 上記で記載して上手く動作しません。 どなたかご存知でしたら教えて頂けませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 正規表現

    String u = "http://~~~~"; Pattern ptn = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+",Pattern.CASE_INSENSITIVE); Matcher objMch = ptn.matcher(u); if (!objMch.matches()) return "error"; とした場合、 普通のURLなら大丈夫ですが、http://......?a=1&... などのようにパラメータが付くと error がかえされます。 ということで、? や & などでパラメータが付いても error が帰らないようにする正規表現を教えてください。お願いします。

    • ベストアンサー
    • Java
  • 半角記号、全角記号を含む正規表現を作れなくて困っています。

    システムの入力チェックのために !"#$%&'()=~|`{+*}<>?_-^\@[;:],./ !”#$%&’()=~|‘{+*}<>?_-^¥@「;:」、。・ などの半角記号、全角記号を1個以上含むとtrueを返す 正規表現を作りたいのですが、うまくできなくて困っています。 以下の[ ]に入れる値で、何か良いものはありませんか? Boolean b = Pattern.compile("[ ]+").matcher(input).matches();

    • ベストアンサー
    • Java
  • 時間の正規表現

    正規表現で、17:00:00という文字の17:00(時:分)の部分だけを見て、時間として認識させたいのですが、どのように記述すればいいのでしょうか? 以下のプログラムを作成したのですが、なぜかfalseが返されてしまって困っています。 教えてください。宜しくお願いいたします。 String str_time = "17:00:00"; String str = "([0-9]|([0-1][0-9]|[2][0-3]))[:][0-5][0-9]"; Pattern pat = Pattern.compile( str ) ; Matcher mat = pat.matcher( str_time ) ; if( mat.matches() ){ // 処理 }

    • ベストアンサー
    • Java
  • Rubyの正規表現について

    こんにちは!Rubyを勉強し始めたものです。 現在正規表現を勉強しており、以下のプログラム問題を解いています。 下記の「puts format_ssns~」部分がtrueになるようにメソッドを定義しなければならないのですが、どうしても「.」の「-」変換はなんとかなるのですが、同時に「234601422」にハイフンを挿入するのがうまくいきません…… 以下プログラムになります。 拙い質問で恐縮ですが、どうぞよろしくお願いいたします。 --- def format_ssns(string) #ここにプログラムを記入する形式 end puts "format_ssns finds and reformat any SSNs in the string" puts format_ssns("234601422, 350.80.0744, 013-60-8762") == "234-60-1422, 350-80-0744, 013-60-8762"

  • java での全角数値を指定する正規表現について

    はじめまして。 javaでの正規表現についての質問です。 現在私は String line = reader.readLine(); if ( line.matches("^[-]?[0-9]*[.]?[0-9]*") ) 上記のような半角の整数、浮動小数点数、マイナスの入力時にTrueとなり、それ以外はFalseとなるようにしています。 ここに「全角の整数、浮動小数点数、マイナス」もTrueとなるように記述したいのですがうまくいきません。 or 条件にて || line.matches("^[-]?[0-9]*[.]?[0-9]*") と、ただ半角の部分を全角に置き換えたところで改善するものではありませんでした。 どなたか良い改善策教えていただけましたら幸いです。

    • ベストアンサー
    • Java
  • 正規表現の検索について

    正規表現のエスケープしなければいけない文字が文字列に含まれているかどうかをチェックしたいのですがうまくいきません。 今は、下記のようにしてnoと表示されます。 よろしくお願いします。 String str ="(1)test"; Pattern p; Matcher m; p = Pattern.compile("\\(1\\)"); m = p.matcher(str); if(m.matches()) { System.out.println("ok"); }else{ System.out.println("no"); }

    • ベストアンサー
    • Java
  • ハイフン省略可能な電話番号の正規表現

    ハイフンを省略できる電話番号の正規表現をJavaScriptで書いているのですが、思うようにマッチしません。 検索すると以下のような正規表現がヒットしました /^0\d{1,4}-\d{1,4}-\d{4}$/ 上記の正規表現のハイフンの後ろに「?」をつけて、ハイフンが省略されてもヒットするように /^0\d{1,4}-?\d{1,4}-?\d{4}$/ しましたが、思い通りにヒットしません。 例えば、090-1234もヒットしてしまいます。 どうしたらハイフンを省略可能な電話番号の正規表現を書くことができますか?教えてください!

専門家に質問してみよう