2015-06-03 2 views
1

К сожалению, вероятно, быть немым этим утром, но я много о регулярных выражениях, не знаю, но создали что-то я хочу использовать с https://regex101.com/Как использовать регулярное выражение в JavaScript, который содержит специальные символы

Но. .. Я не могу использовать код, который они предлагают в Javascript, не избегая его в первую очередь.

Вот регулярное выражение: (?<=color:\s)([a-z]+)

Что делает то, что я хочу (соответствие слова после того, как цвета: в файле CSS)

Но код, который они предлагают использовать в JS является:

var re = /(?<=color:\s)([a-z]+)/g; 
var str = ' color: black'; 
var m; 

while ((m = re.exec(str)) !== null) { 
    if (m.index === re.lastIndex) { 
     re.lastIndex++; 
    } 
    // View your result using the m-variable. 
    // eg m[0] etc. 
} 

Первая строка не работает, поэтому я сбежал от нее до: var re = /\(?<=color:\s\)([a-z]+)/i, которая останавливает ошибку Javascript, но больше не будет соответствовать строкам.

Что я делаю неправильно?

Как в стороне ... может ли кто-нибудь указать мне на расширение этого регулярного выражения, чтобы исключить все, за чем следует скобка? Я пытаюсь получить только названия цветов, поэтому «цвет: черный»; должен совпадать, также «box-shadow: black ... и т. д.» должен соответствовать, но в идеале не «цвет: rgb (... и т. д.)

+3

JS не будет поддерживать –

+3

Использование просмотра назад: '/ цвет: \ сек ([AZ] +)/i' и захватить в плен группу # 1 – anubhava

+0

Спасибо, что сработало –

ответ

0

Это правда, что JS не поддерживает обратные следы, хотя there are workarounds :

  • Reverse строки, а затем сопоставляется, которая позволяет с помощью просмотрового aheads
  • Используй захватывая группу
  • Используйте время цикл с манипуляцией re.lastIndex

в этом случае гораздо EASI эр использовать захваченной группу:

var re = /\bcolor:\s*([a-z]+)/ig; 
 
var str = ' color: black'; 
 
var m; 
 

 
while ((m = re.exec(str)) !== null) { 
 
    if (m.index === re.lastIndex) { 
 
     re.lastIndex++; 
 
    } 
 
    // m[1] is holding our value! 
 
    document.getElementById("res").innerHTML = m[1]; 
 
}
<div id="res"/>

Смежные вопросы