Reputation: 2788
I have a question for a Javascript regex ninja: How could I simplify my variable creation from a string using regex grouping? I currently have it working without using any grouping, but I would love to see a better way!
The string is:
var url = 'resources/css/main.css?detect=#information{width:300px;}';
The code that works is:
var styleStr = /[^=]+$/.exec(url).toString();
var id = /[^\#][^\{]+/.exec(styleStr).toString();
var property = /[^\{]+/.exec(/[^\#\w][^\:]+/.exec(styleStr)).toString();
var value = /[^\:]+/.exec(/[^\#\w\{][^\:]+[^\;\}]/.exec(styleStr)).toString();
This gives:
alert(id) //information
alert(property) //width
alert(value) //300px
Any takers?
Upvotes: 6
Views: 17157
Reputation: 7347
#(?<type>.+){(?<property>.*?):(?<value>.*?);
Group "type": information 31 11
Group "property": width 43 5
Group "value": 300px
[Jay loves regexbuddy]
JS:
result = subject.match(/#([\s\S]+)\{([\s\S]*?):([\s\S]*?);/ig);
Upvotes: 1
Reputation: 44058
Sure..
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];
Upvotes: 7