2016-05-11 4 views
0
/^[a-zA-Z]\d+\\.?\d+?\\.?\d+$/g 

のように書かれていますが、1文字に1文字または2文字は一致しません。それは、3桁以上の数字の後に数字が続く場合にのみ一致します。 は、グループを試みたが、まだRegex JavaScript:この形式はA12.12.122、C1.20.23

/^[a-zA-Z]\d+(\\.?\d+?(\\.?\d+))$/g 

を動作しませんでした。このパターンを書き込むためのより良い方法はありますか?

たとえば、A12、A12.25、F12.23.36、G45.36、H475などのすべての英数字に一致する必要があります。誰でも助けてください。

あなたが行うことができます
+0

行内の2つのバックスラッシュがバックスラッシュを指定していることがわかります。したがって、正規表現は何のためにも全く機能しません。 RegExpコンストラクタに渡す文字列として書き込むときにだけバックスラッシュをエスケープする必要があります。 '\\。 'という構造体はバックスラッシュの後ろに任意の文字を続けます。これはあなたが望むものではありません。 –

+0

あなたはどのような文字の組み合わせを取得しようとしていますか?これは何のために必要なのですか、何を制限していますか? –

+0

@torazaburoええ、私は質問を書いていたときにプレビューに表示されていなかったので、バックスラッシュを含める必要があると考えました。 – Nishant

答えて

0

^[a-zA-Z]\d+(\.\d+)*$ 
  • ^試合が行の

  • [a-zA-Z]マッチAからZまでの任意の文字、いずれの場合

  • \d+マッチ任意の数字を開始1回以上

  • (\.\d+)*は、一つ以上の数字が続く.に一致0回以上、行の終わり($

Demo

+0

ご連絡ありがとうございました!私はあなたの答えを投票することができません。なぜなら、評判のポイントが15点あるからです。あなたはパターンとキャプチャグループが何をしているか説明していただけますか? – Nishant

+0

@Nishant編集済み。 – heemayl

+0

@heemayalありがとうございました。私はregex(特にグループの高度なトピックをキャプチャする)を学びたいので、記事や本を提案したり、コードスクールのコースをやりましたが基本的です。 – Nishant

0

でこの正規表現を使用して、提供された例と一致し、偶発的な一致を防ぐ

/\b[A-Z]\d+(\.\d+)*\b/i 

\ bメタ文字は、別の識別子の真中でのマッチングを防ぎます。 \ dメタ文字は任意の数字と一致し、複数の数字シーケンスはオプションの繰り返しで処理されます。最後の/ iは大文字と小文字のマッチングを可能にしますが、文字クラスでそれらをすべて指定する必要はありません。

このサンプルRubyプログラムは、既知の例だけでなく、不正な形式の例で正規表現をテストします。この場合の「峠」は正規表現式を見つけた、または予想されるように失敗するかのいずれかを意味することを

> ruby regex-test.rb 
Pass: 'A12' 
Pass: 'A12.25' 
Pass: 'F12.23.36' 
Pass: 'G45.36' 
Pass: 'H475' 
Pass: 'A12.12.122' 
Pass: 'C1.20.23' 
Pass: 'C.4' 
Pass: 'BB9' 
Pass: '123' 
Pass: '1.F' 
Pass: '8CF' 
Pass: 'D3D' 

注:

data = [ 
    [ "A12",  true ], 
    [ "A12.25",  true ], 
    [ "F12.23.36", true ], 
    [ "G45.36",  true ], 
    [ "H475",  true ], 
    [ "A12.12.122", true ], 
    [ "C1.20.23", true ], 
    [ "C.4",  false ], 
    [ "BB9",  false ], 
    [ "123",  false ], 
    [ "1.F",  false ], 
    [ "8CF",  false ], 
    [ "D3D",  false ] 
] 

data.each do |pair| 
    puts "#{pair[1] == !(pair[0] =~ /\b[A-Z]\d+(\.\d+)*\b/i).nil? ? 'Pass' : 'Fail'}: '#{pair[0]}'" 
end 

このプログラムを実行した後、それは次の出力が表示されます。 data配列内の各ペアの2番目の要素は、正規表現が一致するかどうかを判断し、正規表現が一致しない場合は、合致しない場合は '合格'が発生します。

+0

最終的には、Javascriptの正規表現をテストするためにRubyを使用するように注意する必要があります。たとえば、Javascriptの正規表現は、再帰やルックバックをサポートしていません。 https://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines – HeadCode

+0

マイケルありがとう!私はあなたの答えを15の評判が必要なものとして投票することはできません。 – Nishant