Позитивный и негативный просмотр
подскажите пожалуйста, в чем может быть ошибка?
нужно вернуть 'x! baaa' alert('xaaa baaa'.replace(/(?=x)aaa/g, '!')); и 'xaaa b!' соответственно alert('xaaa baaa'.replace(/(?!x)aaa/g, '!')); вроде бы шаблоны собраны верно, но в результате возвращается исходная строка без изменений - в первом, и x! b! - во втором случае. гугл не помог. спасибо. |
alecto,
alert('xaaa baaa'.replace(/(x)aaa/g, '$1!')); alert('xaaa baaa'.replace(/([^x])aaa/g, '$1!')); |
вариант через карманы работает, но нужно именно через позитивный и негативный просмотр.
(?=x) (?!x) почему не работаю эти конструкции в регулярке? |
A(?=X) - берёт символ А, после которого идёт X
AB - берёт символ А и символ B, который идёт за A A(?=X)B - пытается найти A за которым идёт X и в то же время идёт B Очевидно, последний вариант не найдёт ничего, потому что один и тот же символ, следующий за A, не может быть одновременно X и B. ?= и ?! "заглядывают" только вправо, если вам надо "заглядывать" влево - в регулярках как таковых для этого есть операторы(?<= и ?<! соответственно), но в javascript они не представлены. |
Понял свою ошибку!
Спасибо огромное за разъяснения! |
Цитата:
|
спасибо огромное! то, что нужно!
|
Часовой пояс GMT +3, время: 13:13. |