我想创建一个正则表达式来匹配网址的一部分,其中包含一个slug后跟一个破折号后跟一个ID。
示例-蛞蝓-ID0001
匹配我([A-Za-z0-1\-]+)
我想在两组中匹配slu and和ID,但我不确定该怎么做。
有什么想法吗?
答案 0 :(得分:0)
在我看来,你正在寻找这个,它匹配“一个或多个字母数字+破折号序列(slug)后跟一个ID”:
((?:\w+-)+)(.*)
编辑:如果您不希望自己匹配诸如“example-slug”之类的字符串(根据Claies的评论),请使用:((?:\w+-)+)ID\d+
答案 1 :(得分:0)
以破折号分割并获取最后一项应该足够了:
s = 'example-slug-ID0001'
console.log( s.split('-')[2] )
console.log( /[^-]+$/.exec(s)[0] )
console.log( s.match(/[^-]+/g)[2] )
console.log( s.replace(/.*-/, '') )
console.log( s.slice( s.lastIndexOf('-') + 1 ) )

答案 2 :(得分:0)
查看你的正则表达式,你的id应该只包含数字0和1。
要在两个不同的组中获取slug和id,您可以使用:
([a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)-(ID[01]+)
<强>解释强>
(
[a-zA-Z0-9]+
(?:
[a-zA-Z0-9]+
)*
并重复该次数为零次或多次)
(
ID\d+
)
如果您的ID可以包含0-9之间的数字,则可以将[01]
更改为\d+
。
如果您的slug只能包含字符,则可以将[a-zA-Z0-9]
更改为[a-zA-Z]
,或者当您使用不区分大小写的标记时,可以使用[a-z]
或[a-z\d]
< / p>
同样允许下划线,您可以使用: