最近在學(xué)習(xí)正則表達(dá)式,在測試練習(xí)的時(shí)候遇到了一個(gè)下面圖片中的問題,就是要匹配所有 質(zhì)數(shù)個(gè) 字符,就是需要匹配下面圖片左邊所有的字符串,不能匹配右邊所有的字符串。有沒有大神給出一個(gè)正確的正則表達(dá)式匹配規(guī)則。去找了一下 參考答案:為^(?!(..+)\1+$)。 或者解釋一下這個(gè)答案的正則表達(dá)式的意思。
1 回答

MMMHUHU
TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
^,$就不用多說了,一個(gè)表開始,一個(gè)表結(jié)尾
?! 表示前瞻,即在開始匹配時(shí),向那些沒有匹配到的元素預(yù)先看一下,是否符合匹配結(jié)果。
(..+) 這里是一個(gè)捕獲,后面的 \1引用的就是這里捕獲的內(nèi)容。至于這里為什么不是.+或者...+是因?yàn)?,質(zhì)數(shù)是從2開始的,而這里也包含了一個(gè)被忽略的內(nèi)容,即字符串長度為0和1時(shí),應(yīng)先排除掉再使用這個(gè)正則。否則對0和1也將判定為質(zhì)數(shù)。
合起來的意思就是:從2開始,先判斷是否為2+2,3+3, 4+4, 5+5,也就是用字符串長度去除以2~string.length,如果整除則不是質(zhì)數(shù),注意我們前面的否定式前瞻,如果不能匹配,則為質(zhì)數(shù),返回true。事實(shí)上,如果知道字符串長度,只需要從2到根號下字符串長度去除就可以了。
- 1 回答
- 0 關(guān)注
- 878 瀏覽
添加回答
舉報(bào)
0/150
提交
取消