用于slu and和id的正则表达式

时间:2018-02-02 23:14:41

标签: javascript regex

我想创建一个正则表达式来匹配网址的一部分,其中包含一个slug后跟一个破折号后跟一个ID。

示例-蛞蝓-ID0001

匹配我([A-Za-z0-1\-]+)

的整个字符串

我想在两组中匹配slu and和ID,但我不确定该怎么做。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

在我看来,你正在寻找这个,它匹配“一个或多个字母数字+破折号序列(slug)后跟一个ID”:

((?:\w+-)+)(.*)

编辑:如果您不希望自己匹配诸如“example-slug”之类的字符串(根据Claies的评论),请使用:((?:\w+-)+)ID\d+

https://regex101.com/r/sqP6mO/1/

答案 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和一个或多个数字ID\d+
  • 关闭第二个捕获组)

如果您的ID可以包含0-9之间的数字,则可以将[01]更改为\d+

如果您的slug只能包含字符,则可以将[a-zA-Z0-9]更改为[a-zA-Z],或者当您使用不区分大小写的标记时,可以使用[a-z][a-z\d] < / p>

同样允许下划线,您可以使用:

([\w]+(?:-[\w]+)*)-(\w+)