如何使正则表达式捕获可选组

时间:2013-12-12 09:52:42

标签: javascript regex

我想找到能够将2个或3个组带入阵列的表达式,而第3个组是可选的(可以是或不是)
这是我到目前为止使用的表达式:

var expr = /^\s*(.+)\s+in\s+(.*?)\s*$/

如果用户只有'物联网' - 我希望匹配数组如下:

[1] - thing

[2] - Things

如果用户有'物联网| orderBy“id”' - 我希望匹配数组如下:

[1] - thing

[2] - Things

[3] - | orderBy "id"
console.log('2:'+'thing in Things'.match(expr)[2])  //-want it to be "Things" 
console.log('3:'+'thing in Things | orderBy "id"'.match(expr)[3])  //want it to be 'orderBy "id"''  (currently - undefined)

此处是指示问题的jsbin的链接:

感谢前进

1 个答案:

答案 0 :(得分:1)

这样的事情: /^\s*(.+)\s+in\s+(.*?)\s*(?:\s+\|\s+(.*))?$/

Regular expression visualization