文字列の開始文字と終了文字は、[a-z0-9]の間隔にする必要があります。真ん中にあるのは同じ間隔[a-z0-9]とハイフン( - )の文字でなければなりません。正規表現パターンは1文字のみを検証しません
私の正規表現パターンは次のとおりです。 /^[a-z0-9].*?[a-z0-9-][a-z0-9]$/
、唯一の有効な文字を含む文字列を検証していないという事実を除いて、正常に動作するようです。たとえば、文字列は'a'
です。
文字列の開始文字と終了文字は、[a-z0-9]の間隔にする必要があります。真ん中にあるのは同じ間隔[a-z0-9]とハイフン( - )の文字でなければなりません。正規表現パターンは1文字のみを検証しません
私の正規表現パターンは次のとおりです。 /^[a-z0-9].*?[a-z0-9-][a-z0-9]$/
、唯一の有効な文字を含む文字列を検証していないという事実を除いて、正常に動作するようです。たとえば、文字列は'a'
です。
/^([a-z0-9]+-)*[a-z0-9]+$/
AA
aaa
私が正しく理解していれば、あなたはこれらのシナリオ
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]*$/
、また動作する可能性があります。
私が理解しているように、完全に小文字の英数字とハイフンで構成された文字列と、最初と最後の文字はハイフンであってはなりません。
RegExを修正して、任意の数の文字を受け入れるようにしましたが、それがあなたの探しているものか、それとも最も簡単なのかは分かりません。厳密にあなたが説明した内容と一致するためには、私が得るためにあなたの元のパターンの一部を削除する必要がありました:
^(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)$
最初のものは下線o。もう一つはより正確です。 – Shubham
2番目の方がより正確ですが、それでも '-aaa'は有効ではありません。 –