Рекомендуется ли использовать анкеры внутри групп захвата? Я пытаюсь имитировать работу lookbehind с этим шаблоном, чтобы соответствовать началу строки или пробелу.
Например, чтобы соответствовать хэштегам, которые находятся в начале строки или после пробела И они закончат строку или после них будет пробел, есть ли лучший способ сделать это, чем это?
(^|\s)#([\w]+)($|\s)
Я просто не собирал группы для простоты.
В вашем случае (^|\s)
требуется внутри группы, потому что она используется в чередованиях.
Он говорит BOS или пробелы, но не оба.
Fwiw, (^|\s)
является типичной границей пробела, которая не требует группы.
Это эквивалентно (?<!\S)
.
Но JS не поддерживает взгляд за утверждениями, поэтому вам придется оставить это.
Для другой стороны (\s|$)
это было бы (?!\S)
которое использует утверждение вперед, которое поддерживает JS.
(^|\s)#([\w]+)(?!\S)