42 javascript regex
我正在尝试在golfscript语法页面上实现以下正则表达式搜索.
var ptrn = /[a-zA-Z_][a-zA-Z0-9_]*|'(?:\\.|[^'])*'?|"(?:\\.|[^"])*"?|-?[0-9]+|#[^\n\r]*|./mg;
input = ptrn.exec(input);
Run Code Online (Sandbox Code Playgroud)
输入只是regexp的第一个匹配.例如:
"hello" "world"应该返回,["hello", "world"]但它只返回["hello"].
pok*_*oke 63
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);
}
Run Code Online (Sandbox Code Playgroud)
这会将所有匹配记录到控制台.
请注意,为了使其工作,您需要确保正则表达式具有g(全局)标志.此标志确保在对表达式执行某些方法后,lastIndex属性将更新,因此将在上一个结果之后开始进一步调用.
Ead*_*del 19
可以match在字符串上调用方法以检索整个匹配集合:
var ptrn = /[a-zA-Z_][a-zA-Z0-9_]*|'(?:\\.|[^'])*'?|"(?:\\.|[^"])*"?|-?[0-9]+|#[^\n\r]*|./mg;
var results = "hello world".match(ptrn);
Run Code Online (Sandbox Code Playgroud)
results 是(根据正则表达式):
["hello", " ", "world"]
Run Code Online (Sandbox Code Playgroud)