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

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

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中则比较“谨慎”,这就是正则引擎的不同吗? :)

时间: 2024-09-24 11:19:12

javascript中正则表达式和ruby中的一点差异的相关文章

JavaScript利用正则表达式去除日期中的-_javascript技巧

1.说明 经常会出现这样的情况,页面的日期格式是:YYYY-MM-DD,而数据库中的日期格式是:YYYYMMDD,两者之间需要转换一下,方能传到Java后台查询数据. 通常,这种转化的方法有两种,第一种,将日期字符串先截取,然后拼接:第二种,就是利用正则表达式去掉"-" 相比较而言,第二种方法快捷,不容易出错. 2.实现源码 复制代码 代码如下: <%@ page language="java" import="java.util.*" p

JavaScript利用正则表达式替换字符串中的内容_javascript技巧

话不多说,请看具体实现代码 //从字符串'Is this all there is'中剪去'is': var str='Is this all there is'; var subStr=new RegExp('is');//创建正则表达式对象 var result=str.replace(subStr,"");//把'is'替换为空字符串 console.log(result);//Is th all there is var subStr=new RegExp('is','i');

java中正则表达式提取字符串中日期实现代码

你可能需要从一段字符串String或者文本中抽取出或者说是过滤出日期或者时间,可以使用如下程序:  代码如下 复制代码 public String run(String text) {         String dateStr = text.replaceAll("r?n", " ");         dateStr = dateStr.replaceAll("\s+", " ");                   

java中正则表达式问题

问题描述 java中正则表达式问题 如题: 如何得到一个字符串中匹配正则的子字符串? 例如:String str="abk abggs wws aos poe wihj allls ayutres "; java代码..... 得到(条件-----------以a开头以s结尾) "abk", "abggs","aos","allls","ayutres" 求所需的正则表达式 解决方案 这

Javascript中正则表达式的使用及基本语法

前面的话 正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作.通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题.javascript中的正则表达式作为相当重要的知识,本文将介绍正则表达式的基础语法 定义 正则表达式(Regular Expression)是一门简单语言的语法规范,是强大.便捷.高效的文本处理工具,它应用在一些方法中,对字符串中的信息实现查找.替换和提取操作 javascript中的正则表达式用RegExp对象表示,有两种写法:一种

在JavaScript的正则表达式中使用exec()方法

         这篇文章主要介绍了在JavaScript的正则表达式中使用exec()方法,是JS入门学习中的基础知识,需要的朋友可以参考下              exec方法为正则表达式匹配的文本搜索字符串.如果找到匹配,则返回结果数组; 否则,返回null. 语法 ? 1 RegExpObject.exec( string ); 下面是参数的详细信息: string : 要搜索的字符串 返回值: 如果找到一个匹配,如果不为空,则返回匹配的文本. 例子: ? 1 2 3 4 5 6 7

JavaScript的正则表达式中test()方法的使用

这篇文章主要介绍了简述JavaScript的正则表达式中test()方法的使用,是JS入门学习中的基础知识,需要的朋友可以参考下 test方法为正则表达式匹配的文本搜索字符串.如果找到匹配,则返回true; 否则返回false. 语法 ? 1 RegExpObject.test( string ); 下面是参数的详细信息: string : 要搜索的字符串 返回值: 如果找到一个匹配,如果不为空,则返回匹配的文本. 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1

简述JavaScript中正则表达式的使用方法

  这篇文章主要介绍了JavaScript中正则表达式的使用方法,正则表达式是JS进阶学习中的重要知识,本文简述了JS对正则表达式的支持情况,需要的朋友可以参考下 正则表达式是一个对象,它描述了字符模式. JavaScript的RegExp类表示正则表达式和字符串和正则表达式定义,使用正则表达式来进行强大的模式匹配和搜索和替换文本功能的方法. 语法: 正则表达式可以用RegExp( ) 构造这样的定义: ? 1 2 3 4 5 var pattern = new RegExp(pattern,

举例初步讲解Ruby中的正则表达式

  这篇文章主要介绍了Ruby中的正则表达式,是Ruby学习进阶当中的重要知识,需要的朋友可以参考下 正则表达式是一个特殊的字符序列可以帮助匹配或者找到其他字符串或串套,使用的模式保持一个专门的语法. 正则表达式文本是一个模式之间的斜线之间或任意分隔符 %r 如下: 语法: 复制代码 代码如下: /pattern/ /pattern/im # option can be specified %r!/usr/local! # general delimited regular expression