我需要匹配一個字母數字字。它可以包含「 - 」,但不能在結尾或開始,「 - 」不能重複(如「 - 」),字長度必須在2到24個字符之間。正則表達式 - 匹配
一些例子:
adfg
asd-asdasd
asd-asd-asd
這些不應該匹配:
-asd
asd-
-asd-
-asd--asd-
我需要匹配一個字母數字字。它可以包含「 - 」,但不能在結尾或開始,「 - 」不能重複(如「 - 」),字長度必須在2到24個字符之間。正則表達式 - 匹配
一些例子:
adfg
asd-asdasd
asd-asd-asd
這些不應該匹配:
-asd
asd-
-asd-
-asd--asd-
使用正則表達式最困難的事情之一是抵制過度聰明的誘惑。你有兩個單獨的,不兼容的測試來執行。長度:
/^.{2,24}$/
...和組成:
/^[A-Z0-9]+(?:-[A-Z0-9]+)*$/i
雖然可能有可能拿出,將在一個過程,執行這兩個測試正則表達式,有沒有必要。只要做其中之一作爲預測:
/^(?=.{2,24}$)[A-Z0-9]+(?:-[A-Z0-9]+)*$/i
正則表達式取決於p如果您嘗試確定特定的長度,那麼您可能會失去靈活性,除非您正在檢查更多標準化輸入,例如日期:\d{2}/\d{2}/\d{4})
。 但類似的:
[a-z]+(-[a-z]+)*
可能會給你一個你的問題的想法。
我看不到嘗試顯示。 –
'(\ w +( - \ w +)*){2,24}'注意'\ w'包含下劃線。你可以用'[0-9a-zA-Z]'代替。 – inhan