JS中正则表达式 js正则表达式数字

JS中正则表达式有几种不同的使用方法,一些用法是通过字符串对象来使用,另外一些通过正则表达式对象使用。

一、RegExp(正则表达式)的属性和方法

1、属性

RegExp的实例有几个只读的属性:

global表示是否为全局匹配,

igoreCase表示是否忽略大小写,

multiline表示是否为多行匹配,

source是正则式的源文本,如/[ab]/g的源文本就是[ab];

另外还有一个可写的属性是lastIndex,表示下次执行匹配时的起始位置。
JS中正则表达式 js正则表达式数字

2、方法

RegExp有两个方法exec和test,均以待匹配的字符串为参数。

(1)exec

如果没有发现匹配则返回null,否则返回一个数组,该数组的第一项为匹配的字符串,接下去为与各个子表达式相匹配的子串;该数组的属性index表示发生匹配的位置,属性input表示被检索的字符串。

注意:如果正则式具有全局属性g,则执行一次exec后,该RegExp对象的lastIndex属性会被设为紧接着匹配子串的字符位置,当该RegExp对象再次调用exec时就会从lastIndex处开始执行匹配。如果exec没有发现任何匹配,它会将lastIndex设为0。当然,如果没有全局属性g的话,exec总是会将lastIndex设为0。

例如:

re = /[ab]+(c)+/g;

m = re.exec('acabcc');

// m[0]为'a', m[1]为'c', m.index为0,m.input为'acabcc',re.lastIndex为2

m = re.exec('acabcc');

// m[0]为'ab', m[1]为'cc', m.index为2,m.input为'acabcc',re.lastIndex为6

m = re.exec('acabcc');

// m为null,re.lastIndex为0

(2)test

test方法执行一次exec,如果发生匹配返回true,否则返回false。

因为test方法是调用exec的,所以也可以用test方法来遍历一个字符串。

二、和正则式相关的几个String(字符串)的方法

1、search(RegExp)

返回第一个与之匹配的子串的开始位置,如果没有匹配则返回-1。

传入的参数如果不是正则式则会传递给RegExp构造函数先转成正则式再进行匹配.

不支持全局匹配g

2、replace(RegExp, replacement)

第一个参数是正则式,第二个参数是要进行替换的字符串。

如果正则式指定了全局模式g,则会替换所有的匹配,否则只替换第一个匹配。replacement中的$符号具有特殊含义,$1,$2,...,$99代表与正则式中的第1个到第99个子表达式相匹配的文本,$& 代表与正则式相匹配的文本,$` 代表位于匹配字串左侧的文本,$'代表位于匹配字串右侧的文本,$$ 为直接量$

例如,想用花引号代替直引号,可用如下代码:

text.replace(/"([^"])*"/g, "``$1''")

另外,replacement也可是函数,传入的参数就是匹配的文本,返回替换的文本即可。

例如,将文本中每个单词的首字母改为大写字母:

text.replace(/bw+b/g, function(word){return word.substr(0,1).toUpperCase()+word.substr(1);})

3、match(RegExp)

无匹配时返回null,否则返回一个数组,该数组的内容取决于正则式是否具备全局属性g。如果没有全局属性g,则match的返回值和exec的返回值类似。如果具有全局属性g,则返回数组代表的是所有匹配的文本,而不含有任何子表达式匹配的信息,也没有index和input属性

4、split(delimiter, limit)

返回一个字符串数组,这些数组元素是通过从头到尾检索字符串中与delimiter相匹配的文本,在文本之前和之后分割原string得到,返回的子串中不包括定界符文本(注:当delimiter是包含子表达式的正则式时,返回数组中将包含与子表达式相匹配的文本,但是不包含与整个正则式相匹配的文本)。如果定界符与字符串的开头相匹配,则返回数组的第一个元素是空串;如果定界符与字符串结尾相匹配,则数组的最后一个元素是空串(注:如果delimiter是空串或与空串相匹配的正则式,那么字符串的每个字符之间都被分割,返回数组长度与原字符串长度一致,因为空串不匹配字符串的开头或结尾!

例如:"Hello<b>world</b>".split(/(<[^>]*>)/)

返回 ['Hello ', '<b>', 'world', '</b>', ''])。

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/63032.html

更多阅读

C++11中的lambda表达式 c lambda表达式 linq

C++11添加了一项名为lambda表达式的新功能,通过这项功能可以编写内嵌的匿名函数,而不必编写独立函数和函数对象,使得代码更容易理解。lambda表达式的语法如下所示:[capture_block](parameters) exceptions_specification-> return_type

转载 上海琉璃光中医诊所黄宗隆介绍,36度7上海台节目中正 中正

原文地址:上海琉璃光中医诊所黄宗隆介绍,36度7上海台节目中正作者:itwaibao心地光明,即是诊所的名字“琉璃光”,这是最纯净最明亮的光,来自人的内心,让人快乐,对于黄宗隆来说,这是取名的深意,也是行医的意义。26岁,使很多医科学生刚刚毕业,还在

声明:《JS中正则表达式 js正则表达式数字》为网友忘了就好分享!如侵犯到您的合法权益请联系我们删除