2014-02-04 5 views
4

мне нужно регулярное выражение, которое не начинается с точки или заканчиваться [-_.]Regex не начинается с точки или заканчиваться точкой

В приведенной ниже регулярных выражений работает, но терпит неудачу в первом состоянии, т.е.; не начинается с точки.

^[A-Za-z0-9][^.]*[^-_.][A-Za-z0-9]$ 

, например: test.com должна быть действительной строкой, но он не ..

ответ

5

от вашего previous question, вы должны быть в состоянии использовать:

^[^.].*[^-_.]$ 

Но если вы хотите быть в соответствии с 1 символьной строкой, вам понадобятся отрицательные образы:

^(?![.])(?!.*[-_.]$).+ 

И если y ou также нужно сопоставить пустые строки, просто используйте * вместо +.

^(?![.])(?!.*[-_.]$).* 
1

Использование отрицательных lookaheads отстаивать свои требования к строке:

^(?!^\.)(?!.*[-_.]$)[a-zA-Z0-9]+$ 
  • Первый символ не ""
  • Последний символ не является «-», «_» или «.».
  • Также по крайней мере один символ в длине
+0

Inbetween первого символа и последнего символа должно быть только цифры или символы – user1050619

+0

^[^.] [A-Za-z0-9] * [^ -_. ] $ - это работает ... это хорошо? – user1050619

+0

Если у вас всегда есть хотя бы два символа, да. – tenub

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