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(/[?\/])是的,阿维纳什,你知道,我对解释很挑剔。顺便说一句,我没有投反对票。我只是希望解释清楚。@Stribizev给定OPs正则表达式(“在你的正则表达式中”),这些字符必须转义。我并不是说没有一个更简单的正则表达式可以替代,但我是在帮助OP看看尝试的正则表达式有什么问题。@JamesThorpe:正则表达式应该可以工作,但单字符替换不是最好的解决方案。在这里,字符类是更合适的解决方案。可能是匹配的str.match(/[^?\/]+/g)
如果你在/
,?
然后str.match(/[^?\/]+\[?\/]/g)
@AvinashRaj。这只是一个有趣的正则表达式,你既不必逃避?
也不必逃避//code>:让arr=uri.split(RegExp(“[?/”)
)。顺便说一句,您还没有指定要作为输出获得的内容。
字符类中的
将匹配文本
。请注意,我不认为构造函数表示法是最好的,MDN建议对任何已知(非动态)模式使用文本表示法。因此,/[?\/]/
是这里最好的选择。