次の条件を検証する文字列の正規表現を提案できますか。
- az または az の文字を含めることができます。少なくとも 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-----------
この話の教訓は、「文字列」を決して検証しないことです。ドメイン オブジェクトを検証してください!
この特定の質問に答えるには: 正規表現の目的を教えていただくまで、適切な正規表現を提供することはできません。