-5

次の条件を検証する文字列の正規表現を提案できますか。

  1. az または az の文字を含めることができます。少なくとも 1 つはそこにある必要があります。
  2. (スペース)、'(アポストロフィ)、-(ハイフン)、.(ドット)を含めることができます

特殊文字や数字など、このセット以外のものはすべて無効な文字になります。

4

2 に答える 2

1

ギミ・コデスの質問には普段は答えませんが、金曜日です!

同じパターンに従って、おそらくSOに関する何千もの質問があります。

Plz help me with a regular expression for a string that
- _must_ contain at least one X
- _can_ contain Y

答えは通常次のようなものです

/^ Y* X [XY]* $/

またはあなたが空想なら

/^ (?=.*X) [XY]+ $

残念ながら、これらの答え (または、これらの質問) はすべて間違っています。問題は、いつものように、仕様が正しくないことです。質問者はいくつかの「良い」例を取り上げて質問で説明していますが、この説明が多くの「悪い」ケースにも一致することに気づいていません。文字通りに解釈すると、この質問はその仕事の半分しかしない表現で答えられます - はい、それは良いケースを検証しますが、悪いケースを拒否しません. 良い表現は両方を行う必要があります!

123例:またはのような電話番号を検証したい123-456-789。だから私はSOに質問を投稿します:

Plz help me with a regular expression:
- must contain at least one digit
- can contain a dash

そして数秒で私は得る

/^-*\d[\d-]*$/

私の例でテストし(動作します!)、コードに挿入します。翌朝、非常に恥ずかしいことに、誰かがこの「電話番号」を提供して私のサイトに登録しました。

----------3-----------

この話の教訓は、「文字列」を決して検証しないことです。ドメイン オブジェクトを検証してください!

この特定の質問に答えるには: 正規表現の目的を教えていただくまで、適切な正規表現を提供することはできません。

于 2013-06-28T14:18:20.240 に答える