2017-08-09 2 views
1

文字列の開始文字と終了文字は、[a-z0-9]の間隔にする必要があります。真ん中にあるのは同じ間隔[a-z0-9]とハイフン( - )の文字でなければなりません。正規表現パターンは1文字のみを検証しません

私の正規表現パターンは次のとおりです。 /^[a-z0-9].*?[a-z0-9-][a-z0-9]$/

、唯一の有効な文字を含む文字列を検証していないという事実を除いて、正常に動作するようです。たとえば、文字列は'a'です。

答えて

3
/^([a-z0-9]+-)*[a-z0-9]+$/ 

AA

aaa

2

私が正しく理解していれば、あなたはこれらのシナリオ

aabc-defg abc a-abc abc-a a z0123abc-def4567y

のいずれかに一致することができますregexpはここで私は^[\w\d]*[\-]?[\w\d]*$ の作業例を得たものだとしますhttp://regexr.com/3gh4o

編集:

これは推奨された編集です:/^[0-9a-z]*[-]?[0-9a-z]*$/、また動作する可能性があります。

+0

最初のものは下線o。もう一つはより正確です。 – Shubham

+1

2番目の方がより正確ですが、それでも '-aaa'は有効ではありません。 –

2

私が理解しているように、完全に小文字の英数字とハイフンで構成された文字列と、最初と最後の文字はハイフンであってはなりません。

RegExを修正して、任意の数の文字を受け入れるようにしましたが、それがあなたの探しているものか、それとも最も簡単なのかは分かりません。厳密にあなたが説明した内容と一致するためには、私が得るためにあなたの元のパターンの一部を削除する必要がありました:

^(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)$

Try It Out

関連する問題