javascript中正则表达式和ruby中的一点差异

来源:互联网 发布:在线域名生成器短链接 编辑:程序博客网 时间:2024/05/16 11:44

看到一个例子,不过这个例子中正则表达式的格式貌似是错的:

Function.prototype.get_name = function(){    return this.name || this.toString().match(/function\s*(\[^()*](/)[1];}

代码的原意是给任意有名的Function实例对象添加返回其名称的方法get_name;不过其中正则的格式不怎么对,简单思考了一下很快用ruby语法写出了:

s = "function foo(x){...}"s.match(/function\s*(.*)\(/)[1] #返回"foo"

不过同样的正则格式在js中取得不对,貌似是贪婪的获取啊!?那么直接在*后面加?号吧:

foo.toString().match(/function\s*(.*?)\(/)

总结一下,js中正则默认是贪婪模式,而ruby中则比较“谨慎”,这就是正则引擎的不同吗? :)

0 0