2012-06-25 3 views
1

Мне нужно, чтобы соответствовать два IPAddress с регулярным выражением: Как 20.20.20.20Два IP-адреса матч

should match with  20.20.20.20 
should match with  [http://20.20.20.20/abcd] 
should not match with 20.20.20.200 
should not match with [http://20.20.20.200/abcd] 
should not match with [http://120.20.20.20/abcd] 

В настоящее время я использую что-то вроде этого регулярного выражения: ".*[^(\d)]20.20.20.20[^(\d)].*" Но он не работает для 1-го и 3-го случаев. Пожалуйста, помогите мне с этим регулярным выражением.

ответ

2

Вы игнорируя тот случай, когда линия начинается с 20.20.20.20:

"(.*[^(\d)]|^)20.20.20.20([^(\d)].*|$)" 

, кажется, работает для меня

+0

спасибо за решение :) – user1479571

0

Вы можете сделать это следующим образом:

select * from tablename 
where ip = '20.20.20.20' or ip like 'http://20.20.20.20/%' 
+0

Ваше решение в порядке, но, глядя на теги, я думаю, что он хочет регулярного выражения. –

+1

@cad это возможно, давайте посмотрим, что говорит OP. –

+0

Вы правы, может быть, он может переместить логику на запрос :) –

0

[^(\d)] без квантора означает, что вы ожидаете ровно 1 characer, что не является числом с помощью [^(\d)]* поможет

+0

спасибо за обнаружение проблемы с регулярным выражением. он работает nw :) – user1479571

Смежные вопросы