Javascript 如何将“?”或“/”与正则表达式匹配?

Javascript 如何将“?”或“/”与正则表达式匹配?,javascript,regex,Javascript,Regex,我想在包含?或/的每个位置拆分一个字符串。我对正则表达式不是很熟悉,所以这给我带来了不少麻烦,因为我不知道该从哪里逃出来,逃什么。应该是这样的: let uri = '/some/random/path?param=1234' let arr = uri.split(/ ?|/ /); ?和/都需要在正则表达式中使用\进行转义: let uri='/some/random/path?param=1234' 设arr=uri.split(/\?\/); 控制台日志(arr); //arr=[“

我想在包含
/
的每个位置拆分一个字符串。我对正则表达式不是很熟悉,所以这给我带来了不少麻烦,因为我不知道该从哪里逃出来,逃什么。应该是这样的:

let uri = '/some/random/path?param=1234'
let arr = uri.split(/ ?|/ /);

/
都需要在正则表达式中使用
\
进行转义:

let uri='/some/random/path?param=1234'
设arr=uri.split(/\?\/);
控制台日志(arr);

//arr=[“”,“some”,“random”,“path”,“param=1234”]
像这样的东西怎么样

var uri = '/some/random/path?param=1234';
var split = uri.split(/([?\/])/);
console.log(split);

为了匹配文本字符
/
,您需要对它们进行转义。要转义特殊字符,应在其前面放置一个
\
。所以
会变成
\?
/
会变成
\/

此外,您的正则表达式中也有一些空格字符——除非您确实试图匹配空格,否则应该将它们省略。例如,
/abc/
将匹配字符串
“abc”
-请注意
abc
后面的空格字符

留给你的是类似的东西:

var uri = '/some/random/path?param=1234'
var arr = uri.split(/\?|\//);
// ["", "some", "random", "path", "param=1234"]
一些参考链接:

在这里,它起作用了。检查一下

    var regex = /([\?|\/])\w+/g;
    var uri = "'/some/random/path?param=1234'";
    var final = uri.match(regex);
    console.log(final);

当每个人都试图证明逃逸是必要的时,让我向你们展示一种避开逃逸地狱的方法:使用a,你们就不必逃逸
/
,而在一个字符类中,你们只需要逃逸
]
,有时还需要逃逸
-

var uri='/some/random/path?param=1234'
var arr=uri.split(RegExp(“[?/]”);
document.body.innerHTML=“”+JSON.stringify(arr,0,4)+“;//空空如也

document.body.innerHTML+=“”+JSON.stringify(arr.filter(布尔值),0,4)+“”;//没有空的
它们不应该总是被转义。
uri.split(/[?\/])str.match(/[^?\/]+/g)
如果你在
/
然后
str.match(/[^?\/]+\[?\/]/g)
@AvinashRaj。这只是一个有趣的正则表达式,你既不必逃避
也不必逃避
//code>:
让arr=uri.split(RegExp(“[?/”)
)。顺便说一句,您还没有指定要作为输出获得的内容。
字符类中的
将匹配文本
。请注意,我不认为构造函数表示法是最好的,MDN建议对任何已知(非动态)模式使用文本表示法。因此,
/[?\/]/
是这里最好的选择。