2015-08-20 3 views
0

Нижеследующая директива CSS-шрифта @ font-face не работает в IE 11, если только семейство шрифтов не свернуто в двойные кавычки вручную, что я хочу автоматизировать с помощью регулярного выражения. Я подошел вплотную, но изо всех сил пытаюсь определить, имеет ли строка со строкой цитаты или нет.Обертка подстроки в двойных кавычках, если она не находится в регулярном выражении

'@font-face {font-style: normal;font-family: f11;font-variant: normal;font-weight: normal; }'.replace(/font-family\:(.*?)\;/, "font-family: \"$1\";"); 

Если выполнить следующую строку в консоли, вы увидите,

@font-face {font-style: normal;font-family: " f11";font-variant: normal;font-weight: normal; } 

Две вещи, которые я хочу сделать:

  1. Удалить пространство из совпавшей строки, в настоящее время это <SPACE>f11 ,
  2. Проверьте наличие котировок в матче.
+0

@Biffen: Спасибо за быстрый ответ. Проверьте обновления выше. – codef0rmer

+0

'replace (/ font-family: \ s * ([^"] +?); /, "Font-family: \" $ 1 \ ";") '? – Biffen

ответ

1
replace(/font-family:\s*([^"]+?);/, "font-family: \"$1\";") 

решает обе # 1 и # 2.

'@font-face {font-style: normal;font-family: f11;font-variant: normal;font-weight: normal; }'.replace(/font-family:\s*([^"]+?);/, "font-family: \"$1\";"); 

@font-face {font-style: normal;font-family: "f11";font-variant: normal;font-weight: normal; } 

И если уже цитировал:

'@font-face {font-style: normal;font-family: "f11";font-variant: normal;font-weight: normal; }'.replace(/font-family:\s*([^"]+?);/, "font-family: \"$1\";"); 

@font-face {font-style: normal;font-family: "f11";font-variant: normal;font-weight: normal; } 
Смежные вопросы