Javascript Regex несколько групповых совпадений в шаблоне - PullRequest
4 голосов
/ 18 мая 2010

У меня есть вопрос для ниндзя Javascript regex: Как я могу упростить создание моей переменной из строки с помощью группировки регулярных выражений? В настоящее время у меня это работает без использования каких-либо группировок, но я хотел бы увидеть лучший способ!

Строка:

var url = 'resources/css/main.css?detect=#information{width:300px;}';

Код, который работает:

var styleStr = /[^=]+$/.exec(url).toString();
var id = /[^\#][^\{]+/.exec(styleStr).toString();
var property = /[^\{]+/.exec(/[^\#\w][^\:]+/.exec(styleStr)).toString();
var value = /[^\:]+/.exec(/[^\#\w\{][^\:]+[^\;\}]/.exec(styleStr)).toString();

Это дает:

alert(id)       //information
alert(property) //width
alert(value)    //300px

Кто-нибудь принимает?

Ответы [ 2 ]

6 голосов
/ 18 мая 2010

Конечно ..

var url = 'resources/css/main.css?detect=#information{width:300px;}';
var matches = url.match(/#([^{]+){([^:]+):([^;]+)/);
var id = matches[1];
var property = matches[2];
var value = matches[3];
1 голос
/ 18 мая 2010
#(?<type>.+){(?<property>.*?):(?<value>.*?);

Group "type":   information     31      11
Group "property":   width       43       5
Group "value":  300px

[Джей любит регулярные выражения]

JS:

result = subject.match(/#([\s\S]+)\{([\s\S]*?):([\s\S]*?);/ig);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...