我想在包含?
或/
的每个位置拆分字符串。我对正则表达式不太熟悉,所以这给我带来了一些麻烦,因为我不知道在哪里和什么逃脱。它应该是这样的:
let uri = '/some/random/path?param=1234'
let arr = uri.split(/ ?|/ /);
答案 0 :(得分:5)
这样的事情怎么样?
var uri = '/some/random/path?param=1234';
var split = uri.split(/([?\/])/);
console.log(split);
答案 1 :(得分:5)
虽然每个人都试图证明逃避是必要的,但是让我告诉你一种方法来避免逃避地狱:使用RegExp constructor notation,你可以避免逃离/
并在角色类中,您只需要逃离]
,有时-
。
var uri = '/some/random/path?param=1234'
var arr = uri.split(RegExp("[?/]"));
document.body.innerHTML = "<pre>" + JSON.stringify(arr, 0, 4) + "</pre>"; // with empty
document.body.innerHTML += "<pre>" + JSON.stringify(arr.filter(Boolean), 0, 4) + "</pre>"; // no empty
请注意,/g
修饰符不需要String#split()
,这是默认行为。
有关JavaScript正则表达式模式转义的更多说明:
\
必须始终被转义?
必须在字符类/
必须使用文字正则表达式进行转义[
必须在字符类]
必须在角色类+
,*
,(
,)
,^
,$
,.
必须在角色外转义class,不必在字符类中转义。答案 2 :(得分:2)
?
和/
都需要使用\
在正则表达式中进行转义:
let uri = '/some/random/path?param=1234'
let arr = uri.split(/\?|\//);
console.log(arr);
//arr = ["", "some", "random", "path", "param=1234"]
&#13;
答案 3 :(得分:2)
为了匹配文字字符/
和?
,您需要转义它们。要逃避特殊角色,您应该在其前面放置一个\
。因此?
将成为\?
,而/
将成为\/
。
此外,你的正则表达式中也有一些空格字符 - 除非你实际上试图匹配空格,否则你应该将它们排除在外。例如,/abc /
将匹配字符串"abc "
- 请注意abc
之后的空格字符。
你剩下的就是类似的东西:
var uri = '/some/random/path?param=1234'
var arr = uri.split(/\?|\//);
// ["", "some", "random", "path", "param=1234"]
一些参考链接:
答案 4 :(得分:2)
这里有效。检查
var regex = /([\?|\/])\w+/g;
var uri = "'/some/random/path?param=1234'";
var final = uri.match(regex);
console.log(final);