Мне нужно создать регулярное выражение javascript, которое будет захватывать "слово", которое предшествует одиночному или двойному :
.
Вот несколько примеров:
*, ::before, ::after // do not capture anything
.class1, .class2:before,.class3::after // captures .class2 and .class3
.class4::before // captures .class4
Это то, что у меня есть прямо сейчас: /(\S+?):/g
. Он соответствует любому небеловому пространственному символу от одного до бесконечности раз в несколько раз, а затем останавливается на :
.
Это работает, за исключением:
::before
и ::after
.Вы можете использовать это регулярное выражение:
([.\w]+):?:\w+
Как вам нужно, это регулярное выражение:
([.\w]+) Captures alphanumeric and dots strings before
:?:\w+ one or two colons followed with some alphanumeric
Информация о матче:
MATCH 1
1. [57-64] `.class2`
MATCH 2
1. [72-79] `.class3`
MATCH 3
1. [119-126] `.class4`
[.\w]
как [-.\w]
. Имейте в виду, что [] позволяет вам определить набор символов, поэтому [-.\w]
позволит -
.
A-Za-z0-9_
Просто добавьте дополнительный/необязательный :
в конец:
/(\S+?)::?/g
Или вы можете указать это как повторение 1-2 раза:
/(\S+?):{1,2}/g
:
Если да, то вы можете использовать это(\S+?\b):?:
Regex101.com/r/wU8uM7/4