Я делаю простое утверждение Lookbehind, чтобы получить сегмент URL (пример ниже), но вместо получения совпадения я получаю следующую ошибку:
Uncaught SyntaxError: Invalid regular expression: /(?<=\#\!\/)([^\/]+)/: Invalid group
Вот script Я запускаю:
var url = window.location.toString();
url ==
http://my.domain.com/index.php/#!/write-stuff/something-else
// lookbehind to only match the segment after the hash-bang.
var regex = /(?<=\#\!\/)([^\/]+)/i;
console.log('test this url: ', url, 'we found this match: ', url.match( regex ) );
результат должен быть write-stuff
.
Может кто-нибудь пролить свет на то, почему эта группа регулярных выражений вызывает эту ошибку? Похож на действительный RegEx для меня.
Я знаю альтернативы о том, как получить сегмент, в котором я нуждаюсь, поэтому это действительно помогает мне понять, что происходит здесь, а не получать альтернативное решение.
Спасибо за чтение.
J.
Я считаю, что JavaScript не поддерживает позитивный lookbehind. Вам нужно будет сделать что-то более похожее:
<script>
var regex = /\#\!\/([^\/]+)/;
var url = "http://my.domain.com/index.php/#!/write-stuff/something-else";
var match = regex.exec(url);
alert(match[1]);
</script>
Javascript не поддерживает синтаксис look-behind, поэтому (?<=)
вызывает ошибку недействительности. Однако вы можете имитировать его различными способами: http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript