我的正则表达式和Javascript上有点生疏.我有以下字符串var:
var subject = "/admin.php?page=settings&tabs_added[114787535263592]=1&tabs_added[217770811582323]=1&tabs_added[198738186831542]=1"
Run Code Online (Sandbox Code Playgroud)
我想提取114787535263592,217770811582323和198738186831542.
我试过使用非捕获括号(?:):
var regexp = /(?:tabs_added[\[])(\d)+(?:[\]])/;
var pageid = regexp.exec(subject);
Run Code Online (Sandbox Code Playgroud)
但是我得到的结果(["tabs_added[114787535263592]", "2"])不是我的预期 - 我做错了什么?这是一个jsFiddle:http://jsfiddle.net/KgpAw/
你非常接近.你也需要抓住它+.否则你只捕获一个十进制数字:
var regexp = /(?:tabs_added[\[])(\
Run Code Online (Sandbox Code Playgroud)
你还应该使你的正则表达式全局找到所有匹配:
var regexp = /(?:tabs_added[\[])(\d+)(?:[\]])/g;
Run Code Online (Sandbox Code Playgroud)
然后,你应该通过成果循环,你也不需要有非捕获组,因为你不使用他们量词(?,+,或*),也不需要把你[和]一个字符类中:
var regexp = /tabs_added\[(\d+)\]/g;
var result;
while(null != (result = regexp.exec(subject))){
document.write(result[1] + '<br />');
}
Run Code Online (Sandbox Code Playgroud)
注意:最好console.log用于调试目的,而不是document.write只要有可用的控制台.(Chrome,Opera,IE9和Firefox都内置了控制台,我认为Safari也是如此,所以你应该有一个可用的.)console.log在记录对象和数组时提供了更有价值的信息.
| 归档时间: |
|
| 查看次数: |
4489 次 |
| 最近记录: |