获取特定字符之间的文本的Javascript正则表达式
我需要Javascript中的正则表达式,它允许我以两种不同格式的订单URL匹配订单号: 网址:获取特定字符之间的文本的Javascript正则表达式,javascript,regex,Javascript,Regex,我需要Javascript中的正则表达式,它允许我以两种不同格式的订单URL匹配订单号: 网址: http://store.apple.com/vieworder/1003123464/test@test.com http://store.apple.com/vieworder/W411234368/test@test.com/AOS-A= M-104121 第一个总是所有数字,第二个总是以W开头,后面紧跟数字 我需要能够使用单个正则表达式返回这些匹配项: 1003123464 W41123
http://store.apple.com/vieworder/1003123464/test@test.com
http://store.apple.com/vieworder/W411234368/test@test.com/AOS-A=
M-104121
第一个总是所有数字,第二个总是以W开头,后面紧跟数字
我需要能够使用单个正则表达式返回这些匹配项:
1003123464
W411234368
这就是我迄今为止所尝试的:
/(vieworder\/)(.*?)(?=\/)/g
这使我能够匹配:
vieworder/1003123464
vieworder/W411234368
但我不希望包括第一个捕获组
我知道我可以通过
string.replace('vieworder/')
运行结果,但如果只需一个命令就可以完成这项工作,那就太酷了。使用表达式而不分组vieworder
vieworder\/(.*?)(?=\/)
var字符串class='1〕http://store.apple.com/vieworder/1003123464/test@test.comhttp://store.apple.com/vieworder/W411234368/test@test.com/AOS-A=M-104121';
var myRegEx=/vieworder\/(.*?(=\/)/g;
var指数=1;
var匹配=[];
var匹配;
while(match=myRegEx.exec(字符串)){
matches.push(匹配[索引]);
}
console.log(匹配项)代码>使用replace
而不是match,因为js不支持lookbehinds。您可以使用捕获组和exec
方法打印特定组中的字符
> var s1 = 'http://store.apple.com/vieworder/1003123464/test@test.com'
undefined
> var s2 = 'http://store.apple.com/vieworder/W411234368/test@test.com/AOS-A='
undefined
> s1.replace(/^.*?vieworder\/|\/.*/g, '')
'1003123464'
> s2.replace(/^.*?vieworder\/|\/.*/g, '')
'W411234368'
或
> s1.replace(/^.*?\bvieworder\/([^\/]*)\/.*/g, '$1')
'1003123464'
我建议
W?\d+
这应该转化为“一个或零W和一个或多个数字”。这将导致视图顺序
。@AvinashRaj,不,它不会。它会高亮显示,但不会包含在匹配中。它会显示在匹配函数的输出中。您需要使用exec函数从组索引1获取所有字符。@AvinashRaj,谢谢您的反馈。更新我的答案如果没有一个答案有效,或者你仍然面临麻烦,请告诉我,以便我能提供帮助