我的正则表达式和javascript上有点生疏.我有以下字符串var:
var subject = "javascript:loadNewsItemWithIndex(5, null);";
Run Code Online (Sandbox Code Playgroud)
我想5使用正则表达式提取.这是我的正则表达式:
/(?:loadNewsItemWithIndex\()[0-9]+/)
Run Code Online (Sandbox Code Playgroud)
应用如下:
subject.match(/(?:loadNewsItemWithIndex\()[0-9]+/)
Run Code Online (Sandbox Code Playgroud)
结果是:
loadNewsItemWithIndex(5
Run Code Online (Sandbox Code Playgroud)
什么是最简洁,最可读的提取方式5?是否可以通过loadNewsItemWithIndex(从匹配中排除而不是匹配5作为子组来完成此操作?
返回值String.match是一个匹配数组,因此您可以在数字部分周围放置括号,然后只检索该特定匹配索引(其中第一个匹配是整个匹配结果,后续条目是每个捕获组):
var subject = "javascript:loadNewsItemWithIndex(5, null);";
var result = subject.match(/loadNewsItemWithIndex\(([0-9]+)/);
// ^ ^ added parens
document.writeln(result[1]);
// ^ retrieve second match (1 in 0-based indexing)
Run Code Online (Sandbox Code Playgroud)
示例代码:http://jsfiddle.net/LT62w/
编辑:感谢@Alan纠正非捕获匹配的工作原理.
实际上,它运作得很好.在非捕获组内匹配的文本仍然被消耗,与在任何组之外匹配的文本相同.捕获组就像一个具有额外功能的非捕获组:除了分组之外,它还允许您提取与整体匹配无关的任何匹配.
| 归档时间: |
|
| 查看次数: |
9533 次 |
| 最近记录: |