Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取特定字符之间的文本的Javascript正则表达式_Javascript_Regex - Fatal编程技术网

获取特定字符之间的文本的Javascript正则表达式

获取特定字符之间的文本的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

我需要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
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,谢谢您的反馈。更新我的答案如果没有一个答案有效,或者你仍然面临麻烦,请告诉我,以便我能提供帮助