2013-10-13 4 views
0

Я пытаюсь сделать регулярное выражение только тогда, когда подстрока 'password' находится в , а не, содержащемся в строке.Regex match, если подстрока НЕ ​​найдена

Единственное решение, которое я наткнулся, что претензии, чтобы решить это: ((?!password).)

однако это соответствует «password123»

Возможно ли это с регулярным выражением? У меня такое чувство, что мне, возможно, придется отказаться от кодирования логики.

EDIT: Я использую Javascripts pattern.test(string)

+3

Какой двигатель регулярного выражения вы используете? .сеть? JavaScript? – aL3891

+0

Я использую javascript – M1Reeder

ответ

1

просто: нужно закрепить регулярное выражение, и, возможно, добавить квантор .. .

^((?!password).)+$ 

The $ не совсем нужно, но лучше иметь это, чем нет.

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

+0

Это именно то, что мне нужно. Что вы имели в виду, привязав регулярное выражение? – M1Reeder

+0

@ M1Reeder '^' соответствует началу строки, так что регулярное выражение фактически проверит всю строку для соответствия, а не где угодно. Когда он проверяет где-нибудь, он не будет совпадать в начале, но он может совпадать в середине на 'assword123', потому что в этот момент могут быть совпадения! Имеет ли это смысл? – Jerry

+0

Мне бы очень хотелось, извините, я немного новичок. Как явным образом отмечаю ваш ответ? NVM, я понял. Еще раз спасибо! – M1Reeder

4

Вы действительно не нужно регулярное выражение здесь ...

if (str.indexOf("password") == -1) { 
    // use str 
} 
Смежные вопросы