正则表达式 - 匹配

时间:2012-07-10 15:12:06

标签: javascript regex backbone.js

编辑:我可能应该提到这是针对Backbone.js路由的。拆分它不是一种选择。

使用以下字符串:

!/example/c/0/0/0/0

我正在尝试使用“match()”来提取斜杠之间的值。我的问题是最后一项(“/ 0”)可能并不总是在字符串中。这就是我目前所拥有的:

'!/example/c/0/0/0/0'.match(/^!(\/[A-z0-9\-_]+|)\/c\/([0-9]+)\/([0-9]+)\/([0-9]+/)

如果示例存在,则返回带有'example','0','0','0'的数组,如果示例不存在则返回'','0','0','0'...所以最后我希望看到的结果是:

'example', '0', '0', '0', ''

当最后一项不存在或:

'example', '0', '0', '0', '0'

当它存在时。所以基本上它是最后一个项目之前的斜线!任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

因为你知道你的分隔符,所以更喜欢分裂,这会更容易!

var toSplit = "!/example/c/0/0/0/0";
var splitted = toSplit.split('/');

答案 1 :(得分:1)

.split()函数可能足以满足您的要求,但您正在寻找的正则表达式如下:

/^!\/([A-z0-9\-_]+)\/c\/(\d+)\/(\d+)\/(\d+)\/(\d*)/

'!/example/c/0/0/0/'.match(/^!\/([A-z0-9\-_]+)\/c\/(\d+)\/(\d+)\/(\d+)\/(\d*)/)
["!/example/c/0/0/0/", "example", "0", "0", "0", ""]

'!/example/c/0/0/0/0'.match(/^!\/([A-z0-9\-_]+)\/c\/(\d+)\/(\d+)\/(\d+)\/(\d*)/)
["!/example/c/0/0/0/0", "example", "0", "0", "0", "0"]

\d[0-9]的快捷方式,*表示重复0次或更多次,而+表示重复1或更多次。

答案 2 :(得分:1)

如果您不需要对值进行严格检查,您可以拥有类似的内容:

"!/example/c/0/0/0/0".match(/^!\/([^/]+)\/c\/([^/]+)\/([^/]+)\/([^/]+)\/([^/]*)/);

请记住,据我所知,你只能使用match找到你正在寻找的确切数组:数组的第一个元素是整个匹配的字符串,而不是“example”