How to get variables from a string using regex in Javascript? - javascript

I have a javascript string variable like so:
var somestring = "mypattern_var1_var2";
How can I use regex to extract var1 & var2?

I would just use the split() method instead if it's that straightforward:
var somestring = "mypattern_var1_var2";
var tokens = somestring.split("_");
var var1 = tokens[1];
var var2 = tokens[2];

I know you specified regex, but is there a specific reason to use it?
An alternative would be to use the .split() method, which would probably be easier.
var somestring = "mypattern_var1_var2";
var results = somestring.split("_");
var var1 = results[1];
var var2 = results[2];

No need
var parts = somestring.split("_");
alert(parts[1] + ':' + parts[2])
Or get real fancy like How can I match multiple occurrences with a regex in JavaScript similar to PHP's preg_match_all()?
And we MUST have jQuery in the equation: Regular expression field validation in jQuery

You could use a split() in this situation - given that you always know that you will have a pattern in the beginning, (given that the pattern doesn't contain any '_'s)
var somestring = "mypattern_var1_var2";
var example = somestring.split('_');
var1 = example[1];
var2 = example[2];
Demo

Related

How to use a variable in a match method with regular expression pattern

I want to get an array in JavaScript from a string, cutting it in half.
Example:
// From this:
var myStr = 'cocacola';
// To this:
var myArray = ['coca', 'cola'];
I tried the following method:
var myStr = 'cocacola';
var strHalf = myStr.length / 2;
// This won't work
var myArray = myStr.match(/.{1,strHalf}/g);
// Only this will work fine
var myArray = myStr.match(/.{1,4}/g);
You can do String.slice() to solve this
var myStr = 'cocacola';
let len = myStr.length;
let result = [myStr.slice(0, len/2), myStr.slice(len/2)]
console.log(result);
You'll need to to use the RegExp() constructor and make a string that it understands:
var regexString = "/.{1," + strHalf + "}/g";
var myRegex = new RegExp( regexString );
var myArray = myStr.match( myRegex );
...but be careful doing this; if strHalf is a string containing special characters like / then your RegExp will have weird behaviour.
You can create a non-hardcoded regexp by using the RegExp constructor:
var myArray = myStr.match(new RegExp('/.{1,'+strHalf+'}/g'));
The constructor has no clue that strHalf should be an integer, so make sure you can control that.
This is known to introduce a lot of security issues, please don't use this in production. Regexes are too often used when they shouldn't. If you ever use a regex, do look into other options
There are much better alternatives, but at least it's possible!
You dont need regex for that.
The easiest way is that:
var myStr = 'cocacola';
var strHalf = myStr.length / 2;
var array = [myStr.substr(0, strHalf),myStr.substr(strHalf, myStr.length)];
jsfiddle: https://jsfiddle.net/cudg8qc3/
You can just slice the string and place the first element in the first slot, and the second element in the second slot in the array.
var str_len = myStr.length
var my_array = [myStr.slice(0, str_len/2), myStr.slice(str_len/2, str_len)]

How can I split in this code and store it in variable in JavaScript

I wanna split in this code and store it in three different variables, like a=GD11, b=GDP7 and c=GD11, but I have problem that break in "s" shows result of "GDP7xGD11".
How can I break in separated three variables please help and suggest me.
var someString = "GD11sGDP7xGD11";
var lastWord = someString.split("s").pop();
alert(lastWord);
Use regular expression /[sx]/
It will produce an array as follows.
var someString = "GD11sGDP7xGD11";
var lastWord = someString.split(/[sx]/);
console.log(lastWord);
To sotre it in variable,
var someString = "GD11sGDP7xGD11";
var lastWord = someString.split(/[sx]/);
a=lastWord[0];
b=lastWord[1];
c=lastWord[2];
console.log(a,b,c);

Need a Regex to get select name

I have a variable which stores some string.
eg var string = '<select mltiple="" name="multi_select_frV6Yzed4dxzsotOvJ5cXg9Aa[]" aria-required="true">';
i want to get multi_select_frV6Yzed4dxzsotOvJ5cXg9Aa[] using regex expression. Thanks in advance
You can do it this way as well (not using any regex here)
var string = '<select mltiple="" name="multi_select_frV6Yzed4dxzsotOvJ5cXg9Aa[]" aria-required="true">';
console.log($($.parseHTML(string)).attr("name")); //gives 'multi_select_frV6Yzed4dxzsotOvJ5cXg9Aa[]'
You can use this regex to retrieve that value:
var matches = /name="(.*)"\s/gi.exec(string);
console.log(matches[1]); // = "multi_select_frV6Yzed4dxzsotOvJ5cXg9Aa[]"
You would obviously need to make the code more robust to deal with cases where the attribute is not found.
You could also use jQuery:
console.log($(string).attr('name'));
See this working regex.
Here is the javascript code.
var re = /name="([^"]*)/g;
var str = '<select mltiple="" name="multi_select_frV6Yzed4dxzsotOvJ5cXg9Aa[]" aria-required="true">';
var m;
m = re.exec(str);
alert(m[1]);

Javascript regex value search

After reading the post here, I tried to get the value by regex as below:
var myString = "<a href='/search.html?id=HDJ&area=ASD&estate=JKG&ppt=3'></a>";
var myRegexp = /&estate=(.*?)(?:\s|$)/g;
var match = myRegexp.exec(myString);
match[1]
The result was JKG&propertytype=3'></a>, but I only want JKG. Strictly speaking I want the value between &estate= and &ppt Could someone suggest how to do that?
Thanks
A Regular Expression:
/&estate=(.*?)&ppt=/g
Note: I wouldn't recommend using regular expressions to parse query strings. It's brittle. Consider if the variables in the query string change order. If that can be the case, I recommend reading - Parse query string in JavaScript.
do:
var myString = "<a href='/search.html?id=HDJ&area=ASD&estate=JKG&ppt=3'></a>";
var myRegexp = /estate=(.*)&ppt=/g;
var match = myRegexp.exec(myString);
console.log( match[1] );
If only the solution is important then you can use the following:
var myString = "<a href='/search.html?id=HDJ&area=ASD&estate=JKG&ppt=3'></a>";
var indx1 = mystring.indexOf("&estate=") + 8;
var indx2 = mystring.indexOf("&ppt");
var neededString = mystring.substring(indx1, indx2);
Just exclude ampersands from the selection:
var myRegexp = /&estate=([^&]+)/g;
You might want to change it to this, in case estate is the first parameter:
var myRegexp = /[\?&]estate=([^&]+)/g;
jsFiddle
Based on your result value, just split it at the ampersand, no new or alternate regex required.
JavaScript:
var myString = "<a href='/search.html?id=HDJ&area=ASD&estate=JKG&ppt=3'></a>";
var myRegexp = /&estate=(.*?)(?:\s|$)/g;
var match = myRegexp.exec(myString);
var value = match[1].split('&')[0];
alert( value );

Search through string with Javascript

Say I have a string like this:
jJKld-xxx-JKl122
Using javascript, how can I get on what's in-between the - characters? In others words, all I need to do is put whatever is xxx into a variable.
Thanks
If the string is always in that format, this will work:
var foo = 'jJKld-xxx-JKl122';
var bar = foo.split('-')[1]; // = xxx
just try it with this simple regex
var str = 'jJKld-xxx-JKl122';
var xxx = str.replace( /^[^\-]*-|-[^\-]*$/g, '' );
You can simply use the following regex to get the result
var myString = "jJKld-xxx-JKl122";
var myRegexp = /(?:^|\s*)-(.*?)-(?:^|\s*)/g;
var match = myRegexp.exec(myString);
alert(match[1]);
See the demo here

Categories

Resources