1
我很難合併兩個正則表達式。合併兩個正則表達式
,因爲我不是那麼熟悉,我寫的正則表達式separetely:
1)無字母可以是兩次以上連續的符號「'」和‘ - ’允許太:
^(?!.*([A-Za-z])\1{2})[-'A-Za-z]{3,50}$
2)不能有連續兩次允許的符號:
^(?!.*([A-Za-z])\1{2})[-'A-Za-z]{3,50}$
它修復了「 - 」和「‘’」的問題,但仍需要考慮到dissalow辦法「 - '「或」' - 「
我想將它們合併在一個,像這樣:
^(?!.*([A-Za-z])\1{2}|([-'])(?!\2))[-'A-Za-z]{3,50}$
但好像我的手被打破。請告訴我我的錯誤在哪裏?
我想達到的目標:
1)不超過2相同字母連續。
通行證:Test
,Teest
失敗:Teeest
,tttest
2)不超過1個特殊(只有兩個是允許的 - '和 - )在一排符號。
通行證:Te-st
,tes't
,-test
,'test
,test-
,test'
,T-e-s-t
未通過:Te--st
,tes''t
,-'test
,'-test
,test'-
,
3)最低爲3個字母(特殊符號不計數),最大爲50個符號(特殊符號數)
通行證:Te-s-t
,tes't
,-test
,'test
,test-
,test'
未通過:te-
,-te
,t-e
,'t'
你的意思是連續三個字母不能出現在一行,每個' '或'-'應該用字母包圍?試試'^(?!。*([A-Za-z])\ 1 {2})(?=。{3,50} $)[A-Za-z] +(?:[ - '] [ A-ZA-Z] +)* $'。沒有測試用例,檢查模式是否是你需要的是相當困難的。 –
@WiktorStribiżew我用測試用例更新了我的問題 – Cheese
正則表達式1)和2)似乎是相同的。 (你在規則中再次使用相同的編號,但我正在討論頂部附近的正則表達式。) – tripleee