2011-07-15 18 views

答えて

9

を返す必要があります

"acacacccは、" 真

"acacacxcc" を返す必要があり、それにいくつかのアンカーを追加します。

/^[ca]+$/ 
+2

ません: '" C \ nXをあなただけテストし、それがその後、一致する場所を気にしないしたい場合".match(/^[ca] + $ /)'と入力します。 –

+0

このアンカーは正しくありません。 Chris Healdの答えに対するコメントをご覧ください。 – skalee

6

あなただけのアンカーを必要とします。

"car".match(/^[ca]+$/) 

「^」と「$」は「開始」と「終了」の文字列を意味するので、これは、「C」または「A」で構成される文字列全体を強制します。それらがなければ正規表現は文字列のどの部分にも一致する限り成功します。

+2

これは、 '' caca \ nrabbits ''のような文字列で壊れます。適切なアンカーは '\ A'と' \ Z'です。 – cam

+4

@cam:実際には '\ z'ではなく' \ z'が必要です。そうしないと 'c \ n" 'が欠けてしまいます。 –

+0

@muが短すぎます:良い点、ありがとう。 – cam

0

この

"car".match /^(a|c)+$/ 
3

の周りあなたのロジックを回して、悪い事を探してみてください:

string.match(/[^ca]/) 
string.index(/[^ca]/) 

上記のいずれかがnil以外である場合、あなたが悪いの文字列を持っています。例えば

if string.index(/[^ca]/).nil? 
    # You have a good string 
else 
    # You have a bad string 

を::

>> "car".index(/[^ca]/).nil? 
=> false 
>> "caaaacaac".index(/[^ca]/).nil? 
=> true 
1

はこれを試してみてください:

"car".match(/^(?:c|a)$/) 
関連する問題