本文实例讲述了JavaScript引用类型RegExp基本用法。分享给大家供大家参考,具体如下:
1、正则表达式定义
三个标志:全局模式g,不区分大小写模式i,多行模式m。
1) 字面量定义
2) 构造函数定义:
接收两个参数——要匹配的字符串模式和可选的模式字符串(g,i,m)。
注意:
1) 若需要匹配的字符串中包含以下元字符,就必须对它们进行转义:
2) 由于构造函数定义正则表达式的参数是字符串,所以在某些情况下要对字符时行双重转义如\n,字符\在字符串中通常被转义为\\,而在正则表达式字符串参数中就会变成\\\\,字面量模式/\w\\hello\\123/等价的字符串为“\\w\\\\hello\\\\123”。 2、RegExp实例属性 以上代码返回
3、RegExp实例方法 1) 继承的 2) 参数:用于匹配的正则表达式。 返回值:区分 a. 如果设置g标志,那么返回的是包含所有匹配项的数组。 b. 如果没有设置g标志,那么返回的是包含第一个匹配项的数组,第0项是与整个正则表达式匹配的字符串,第1项是是与第1个子表达式相匹配的文本(如果有的话),第2项是与第2个子表达式相匹配的文本(如果有的话)。 3) 参数:要应用模式的字符串。 返回值:返回包含第一个匹配项信息的数组,没有匹配项的情况下返回null。 返回的数组包含额外的两个属性:index和input。其中,index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串。在数组中,第0项是与整个正则表达式匹配的字符串,第1项是是与第1个子表达式相匹配的文本(如果有的话),第2项是与第2个子表达式相匹配的文本(如果有的话)。 在不设置g标志的情况下,同一个字符串上调用 设置全局标志g情况下,同一个字符串上调用exec()每次会返回一个新的匹配项的信息。 4) 参数:要应用模式的字符串 返回值:在模式与该参数匹配的情况下返回true,否则返回false。 问题: 如果正则表达式带有标志g,使用test校验不同的字符串时,RegExp会使用test前一个字符串得出的lastIndex去test后一个字符串,必定出错。 解决方法: ① 将正则表达式的 lastIndex 属性设置为0 再用作校验 ② 正则表达式去掉标志g 5) 说明: ① ② 即使设置了g标志, ③ a. 当正则表达式无子表达式,并且没有设置g标志时, b. 当正则表达式无子表达式,并且设置g标志时, c. 当正则表达式有子表达式,并且没有设置g标志时, d. 当正则表达式有子表达式,并且设置g标志时, 三个标志:全局模式g,不区分大小写模式i,多行模式m。 PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用: 更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》 希望本文所述对大家JavaScript程序设计有所帮助。
toLocaleString()
、toString()
、valueOf()
方法toLocaleString()
:返回正则表达式的字面量,与创建正则表达式的方式无关。toString()
:返回正则表达式的字面量,与创建正则表达式的方式无关。valueOf()
:返回正则表达式本身。match()
方法match()
的返回值主要是看是否设置g标志,没有设置g标志时与exec()
是等价的。exec()
方法exec()
的返回值不受g标志影响,在不设置g标志时,在同一个字符串上多次调用exec()
将会始终返回第一个匹配项的信息。即使设置了g标志,一次也只返回一个匹配项,但设置g标志时,每次调用exec()
都会在字符串中继续查找新匹配项,会驱动match()设置g标志时等价(区别在于遍历所有匹配时,exec()
需要多次匹配,match()
一次匹配即可得到所有匹配)。exec()
始终返回第一个匹配项的信息。test()
方法test()
方法经常用于if语句中。exec()
和test()
是正则表达式的方法,而不是字符串的方法,它的参数才是字符串;match
是字符串的方法,而不是正则表达式的方法,它的参数才是正则表达式。exec()
每次只返回一个匹配项。没有设置g标志时,exec()
和match()
执行结果相同;设置g标志时,match()
将忽略子表达式,只查找全匹配正则表达式。exec()
和match()
的区别:exec()
和match()
执行结果相同,均返回第一个匹配的字符串内容。exec()
返回第一个匹配的字符串内容,若存在多处匹配内容,则match()
返回的是包含所有匹配字符串的数组。exec()
和match()
执行结果相同,都查找全匹配正则表达式和子表达式,并返回包含全匹配字符串和匹配子表达式的数组。exec()
和match()
执行的结果不相同,match()
将忽略子表达式,只查找全匹配正则表达式,并返回包含所有匹配字符串的数组。