2016-03-17 3 views
1

Я генерацию регулярного выражения, которое может содержать любые буквы или цифры или подчеркивание [a-zA-Z0-9_], но не содержит слова, которые точно соответствуют log, login и, наконец, test.Регулярного выражения, чтобы исключить определенные слова, но разрешить определенным закономерностям

Может ли кто-нибудь помочь мне с этим?

+1

Используйте '\ w' вместо' [A-Za-z0-9_] '. Оба эквивалентны. –

ответ

1
^(?!(^test$)|(^log$)|(^login$))([A-Za-z0-9_-/]+)$ 

сделал трюк для меня. Спасибо за ваши ответы.

3

Вы можете использовать это негативное опережение регулярное выражение:

\b(?!log(?:in)?|test)\w+ 

RegEx Demo

(?!log(?:in)?|test) отрицательно опережение, что не получится матч, если какие-либо данные слова log,login,test присутствуют.

+1

@Spidi: Вы даже можете сделать регистр нечувствительным, а также конструкцией '(? I:)'. См. Обновленную демонстрацию anubhava (https://regex101.com/r/gQ7cL4/2). – Jan

+0

Thanks Jan. OP также может использовать модификатор/I, чтобы сделать регистр нечувствительным. – anubhava

+0

@Spidi: Это сработало для вас? – anubhava

0

Я думаю, что ниже регулярное выражение должно сделать трюк

^((?!log|login|test)[a-zA-Z0-9_])*$ 
+1

Ну, что я могу сказать, вы [думаете не так] (https://regex101.com/r/gQ7cL4/3) - якоря уничтожают все. Кроме того, они являются избыточными (дважды). – Jan

+0

извините, мой плохой. Я думал, что исключены только «журнал», «логин», «тестовые» случаи. Ред. – Minh

+0

^(?! (^ Test $) | (^ log $) | (^ login $)) ([A-Za-z0-9 _- /] +) $ решил это для меня. Спасибо за ваши ответы! – Spidi

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