编辑:我可能应该提到这是针对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'
当它存在时。所以基本上它是最后一个项目之前的斜线!任何帮助将不胜感激。
答案 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”