我正在尝试实现在golfscript语法页面上找到的以下正则表达式搜索。
var ptrn = /[a-zA-Z_][a-zA-Z0-9_]*|'(?:\\.|[^'])*'?|"(?:\\.|[^"])*"?|-?[0-9]+|#[^\n\r]*|./mg;
input = ptrn.exec(input);
输入仅是正则表达式的第一个匹配项。例如:"hello" "world"
应该返回,["hello", "world"]
但仅返回["hello"]
。
RegExp.exec一次只能返回一个匹配结果。
为了检索多个匹配项,您需要exec
在表达式对象上多次运行。例如,使用简单的while循环:
var ptrn = /[a-zA-Z_][a-zA-Z0-9_]*|'(?:\\.|[^'])*'?|"(?:\\.|[^"])*"?|-?[0-9]+|#[^\n\r]*|./mg;
var match;
while ((match = ptrn.exec(input)) != null) {
console.log(match);
}
这会将所有匹配项记录到控制台。
请注意,为了使此工作有效,您需要确保正则表达式具有g
(全局)标志。该标志确保在表达式上执行某些方法后,lastIndex
属性会更新,因此在上一个结果之后将开始进一步的调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句