How to match either `?` or `/` with regex?
How to match either `?` or `/` with regex?
I want to split a string at every position that contains a ?
or a /
. I am not very familiar with regular expressions, so this is giving me quite some trouble, since I am not sure where and what to escape. It should be something like this:
let uri = '/some/random/path?param=1234' let arr = uri.split(/ ?|/ /);
Answer by James Thorpe for How to match either `?` or `/` with regex?
Both ?
and /
need to be escaped in your regex using \
:
let uri = '/some/random/path?param=1234' let arr = uri.split(/\?|\//); console.log(arr); //arr = ["", "some", "random", "path", "param=1234"]
Answer by Tom Hart for How to match either `?` or `/` with regex?
How about something like this?
var uri = '/some/random/path?param=1234'; var split = uri.split(/([?\/])/g); console.log(split);
https://jsfiddle.net/tomharto/0rjw01ch/
Answer by Lix for How to match either `?` or `/` with regex?
In order to match the literal characters /
and ?
, you'll need to escape them; since they have special meanings for regular expressions. To escape a special character, you should place a \
in front of it. So ?
would become \?
.
In addition, you have some space characters in your regex as well - unless you are actually trying to match blank spaces, you should leave them out. For example, /abc /
will match the string "abc "
- note the space character after the abc
.
What you are left with is something similar to this:
var uri = '/some/random/path?param=1234' var arr = uri.split(/\?|\//); // ["", "some", "random", "path", "param=1234"]
Answer by Wasiq Muhammad for How to match either `?` or `/` with regex?
Here it works.Check it
var regex = /([\?|\/])\w+/g; var uri = "'/some/random/path?param=1234'"; var final = uri.match(regex); console.log(final);
Answer by stribizhev for How to match either `?` or `/` with regex?
While everyone tries to prove that escaping is necessary, let me show you a way to keep off the escaping hell: using a RegExp constructor notation, you avoid having to escape /
and inside a character class, you will only have to escape ]
and sometimes -
.
var uri = '/some/random/path?param=1234' var arr = uri.split(RegExp("[?/]")); document.body.innerHTML = "" + JSON.stringify(arr, 0, 4) + "
"; // with empty document.body.innerHTML += "" + JSON.stringify(arr.filter(Boolean), 0, 4) + "
"; // no empty
Note that you do not need a /g
modifier with String#split()
, it is default behavior.
Some more notes on escaping in JavaScript regex patterns:
\
must always be escaped?
must be escaped outside of a character class/
must be escaped in a literal regex notation[
must be escaped when outside of a character class]
must be escaped inside a character class+
,*
,(
,)
,^
,$
,.
must be escaped outside the character class and do not have to be escaped inside a character class.
Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72
0 comments:
Post a Comment