2017-09-07 2 views
1

Est-il recommandé d'utiliser des ancrages à l'intérieur des groupes de capture? J'essaye de simuler l'opération lookbehind avec ce modèle pour correspondre au début de ligne ou aux espaces. Par exemple pour faire correspondre les hashtags qui sont au début de la ligne ou après les espaces ET ils finiront la ligne ou il y a des espaces après eux, est-il meilleur moyen de le faire?Est-ce que (^ | s) est une regex valide en JavaScript?

(^|\s)#([\w]+)($|\s) 

J'ai quitté les groupes non capturants pour des raisons de simplicité.

+1

Bienvenue sur SO! S'il vous plaît fournir un peu plus de code afin que nous puissions vous aider - sinon: ça dépend ... – Jan

+0

Je voudrais juste le laisser tel quel ou le changer en '(^ | \ s) # ([\ w] +) (?! \ S) ' – sln

Répondre

0

Dans votre cas (^|\s) est nécessaire dans le groupe car il est utilisé dans les alternances.
Il est dit BOS ou espace blanc, mais pas les deux.

Fwiw, (^|\s) est une limite d'espace typique, qui ne nécessite pas de groupe. Il s'agit de cet équivalent (?<!\S). Mais JS ne prend pas en charge le look derrière les assertions, donc vous devriez laisser cela.

Pour l'autre côté (\s|$) ce serait (?!\S) qui utilise une assertion anticipée que JS prend en charge.