我试图在此声明中定位?state=wildcard
:
?state=uncompleted&dancing=yes
我想定位整行?state=uncomplete
,但也允许它找到=
运算符之后的任何单词。所以不完整也可以完成,不计划,或者你有什么。
我得到的一个警告是,我可以在<&em>&符号之前定位通配符,但是如果没有符号并且param state
本身就是什么呢?
答案 0 :(得分:5)
试试这个正则表达式:
var regex = /\?state=([^&]+)/;
var match = '?state=uncompleted&dancing=yes'.match(regex);
match; // => ["?state=uncompleted", "uncompleted"]
它会匹配字符串“\?state =”之后的每个字符,除了一个与号之外,如果有必要,一直到字符串的结尾。
答案 1 :(得分:2)
替代正则表达式:/\?state=(.+?)(?:&|$)/
它将匹配第一个&
字符或字符串结尾
答案 2 :(得分:2)
var URI = '?state=done&user=ME'.split('&');
var passedVals = [];
这给了我们['?state = done','user = ME'],现在只做一个for循环:
for (var i=0;i<URI.length;i++)
{
passedVals.push(URI[i].split('=')[1]);
}
传递的瓦尔斯将包含你需要的任何东西。这样做的另一个好处是您可以将请求解析为对象:
var URI = 'state=done&user=ME'.split('&');
var urlObjects ={};
for (var i=0;i<URI.length;i++)
{
urlObjects[URI[i].split('=')[0]] = URI[i].split('=')[1];
}
我遗漏了'?'在字符串的开头,因为一个简单的.replace('?','')可以轻松修复...
答案 3 :(得分:1)
您可以匹配不是&
的任意数量的字符。如果根本没有&
,那当然也会有效:
/(\?state=[^&]+)/.exec("?state=uncompleted");
/(\?state=[^&]+)/.exec("?state=uncompleted&a=1");
// both: ["?state=uncompleted", "?state=uncompleted"]