Я работаю над следующим регулярным выражением:
var match = string.match(/(?:(normal|italic|oblique))?\s*(?:(normal|small-caps))?\s*(?:((?:normal|bold|bolder|lighter|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px)))\/?)?\s*((?:(?:xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px))\s*){1,2})?\s*(?:(normal|inherit|\d+(?:\%|in|cm|mm|em|rem|ex|pt|pc|px))\s*)?\s*(?:([a-zA-Z\-\,\'\"\s]+)\s*)?(?:,|;)(?:(caption|icon|menu|message-box|small-caption|status-bar)\s*)?/i);
Строка:
var string = "font: normal small-caps fantasy, sans-serif;"
Мне нужно, чтобы каждое из значений возвращалось на свое место в массиве совпадений, однако одно из совпадений слишком жадное. Результат таков:
match[1] = "normal"
match[2] = "small"
match[6] = "-caps fantasy, sans-serif"
Мне нужно, чтобы результат был:
match[1] = "normal"
match[2] = "small-caps"
match[6] = "fantasy, sans-serif"
Надеюсь, это имеет смысл. Спасибо за помощь.
-
. - person tckmn   schedule 30.03.2014match[1]
соответствуетundefined
,match[2]
соответствуетnormal
, аmatch[6]
соответствует-caps fantasy, sans-serif
: см. jsfiddle.net/tC7T7. а>. Это заставляет меня думать, что за пределами кода, который вы разместили, что-то не так. - person GOTO 0   schedule 30.03.2014