在嘗試使用正則匹配 12-128 時,發(fā)現(xiàn)可以匹配到129,如題。
/ 192.168.0.(12[0-8]|1[0-1][0-9]|[2-9][0-9]|1[2-9]) /
匹配 129 時返回true。判斷 255 也會匹配到前兩位 25。
如何能避免此類情況出現(xiàn)?
或者是用其他寫法?
3 回答

MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗 獲得超4個贊
這種需求建議就不要用正則實現(xiàn),直接用正則粗略過濾是個正整數(shù),然后再轉(zhuǎn)成整數(shù)判斷一下大小就行了,反正js在前端執(zhí)行,這個速度又不會太慢,還容易維護(hù),你覺得你寫個這個正則后面你自己還能看得懂嗎?
EDIT,沒細(xì)看你的需求,你這個需求完全不應(yīng)該用正則去實現(xiàn),而應(yīng)該直接用ipv4的解析類庫去搞,直接限定ip段豈不美哉?

森欄
TA貢獻(xiàn)1810條經(jīng)驗 獲得超5個贊
對數(shù)字區(qū)間通常是分段寫正則,例如12-128,分成:12-19, 20-99, 100-119,120-128:/^((1[2-9])|([2-9][0-9])|(1[01][0-9])|(12[0-8]))$/
對于更復(fù)雜的,還是直接提取數(shù)字,然后if/else判斷吧,簡單的正則+簡單的判斷總比復(fù)雜的正則好。
- 3 回答
- 0 關(guān)注
- 638 瀏覽
添加回答
舉報
0/150
提交
取消