我想用以下結構 string1-string2-string3 匹配一個字串,其中每個字串可以包含數字但不能包含大寫字母。
一個具體的例子是“hello-world-today”
我有一個正則運算式,但我確信它不是最佳的,因為我重復了相同的模式三次。
'([a-z0-9]([-a-z0-9]*[a-z0-9])?)-(([a-z0-9]([-a-z0-9]*[a-z0-9])?))-(([a-z0-9]([-a-z0-9]*[a-z0-9])?))'
uj5u.com熱心網友回復:
這應該是一種有效的方法:
^(?:[a-z\d] -){2}([a-z\d] )$
它匹配兩組小寫字母和數字,后跟一個破折號,然后是另一組相同的字符,最后沒有破折號。
uj5u.com熱心網友回復:
嘗試這個:^(?:(?:[a-z0-9] )-(?:[a-z0-9] )) $
演示:https ://regex101.com/r/4vEDyq/1
^$
-- 線邊界(?:)
--非捕獲組
hello-world
破折號(fe 、hello-world-today
、hello-world-today-and-tomorrow
)之間有多少字串標記并不重要。
uj5u.com熱心網友回復:
通過使用單詞邊界\b
來強制使用可選連字符和一組:
^(?:[a-z\d] -?\b) $
在 regex101 上查看這個演示(右側有更多解釋)
將
( one or more ) 最后替換為最小重復次數的所需限制量詞
,
例如{2,}
,對于兩個或更多,{3,}
對于三個或更多{3}
或恰好三個重復。
僅供參考:使用(?>
原子組 )
而不(?:
是非捕獲 )
性能更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/508385.html
標籤:正则表达式
上一篇:僅對引數中的數字求和