Javascript学习笔记(十二)--内置对象之RegExp 对象(正则)

RegExp即正则表达式 对象用于规定在文本中检索的内容。

  1. 创建RegExp对象
    var name=new RegExp(pattern, attributes);

    参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。
    参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

    修饰符 描述
    i 执行对大小写不敏感的匹配。
    g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
    m 执行多行匹配。
  2. RegExp的简单模式--检索一个单独的字符。

    1. 定义: var patt1=new RegExp("e");
      使用该 RegExp 对象在一个字符串中检索时,将寻找的是字符 "e"。

    2. RegExp 对象的方法:test()、exec()、compile()

      • test() 方法检索字符串中的指定值。返回值是 true 或 false。
        document.write(patt1.test("The best things in life are free"));
        结果:true
      • exec()检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
        document.write(patt1.exec("The best things in life are free"));
        结果:e
        如果定义变量的时候,增加一个全局参数g,即 var patt1=new RegExp("e",g);,运行一次exec(),找到第一个“e”,并存储其位置。如果再次运行 exec(),则从存储的位置开始检索,并找到下一个 "e",并存储其位置。
        例如:
        do{
        result=patt1.exec("The best things in life are free")
        document.write(result)
        }while(result != null)
        
        结果:eeeeeenull
      • compile() 方法用于改变 RegExp。
        compile() 既可以改变检索模式,也可以添加或删除第二个参数。
        patt1.compile("d");检索对象由“e”变为“d”
    3. 复杂模式--正则表达式:更多的字符,并可用于解析、格式检查、替换

      RegExp 对象属性

      属性 描述
      global RegExp 对象是否具有标志 g。RegExpobjec.global返回值true或者false
      ignoreCase RegExp 对象是否具有标志 i。RegExpobjec.ignorance返回值true或者false
      lastIndex 一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。初始值为0
      multiline RegExp 对象是否具有标志 m。RegExpobjec.multiline返回值true或者false
      source 正则表达式的源文本。返回模式匹配所用的文本。

      RegExp方法:test()、exec()、compile()

正则表达式之方括号

方括号用于查找某个范围内的字符:

表达式 描述
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red blue green) 查找任何指定的选项。

正则表达式之元字符

元字符(Metacharacter)是拥有特殊含义的字符:

元字符 描述
. 查找单个字符,除了换行和行结束符。保证"."前后的字符完全相同即可。
\w 查找单词字符。
\W 查找非单词字符。
\d 查找数字。
\D 查找非数字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NUL 字符。
\n 查找换行符。
\f 查找换页符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 查找以十六进制数 dd 规定的字符。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

量词

量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{X} 匹配包含 X 个 n 的序列的字符串。
n{X,Y} 匹配包含 X 至 Y 个 n 的序列的字符串。
n{X,} 匹配包含至少 X 个 n 的序列的字符串。
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

支持正则表达式的 String 对象的方法

  1. search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
    stringObject.search(regexp)
    例如:
    var str="Visit W3School!"
    document.write(str.search(/W3School/))
    #不区分大小写:document.write(str.search(/w3school/i))
    
    结果:6
  2. match():字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
    使用全局匹配的正则表达式来检索字符串中的所有数字:
    var str="1 plus 2 equal 3"
    document.write(str.match(/\d+/g))
    
    结果:1,2,3
  3. replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
    stringObject.replace(regexp/substr,replacement)
    replace() 方法详解

没看太懂

  1. split() 方法用于把一个字符串分割成字符串数组。
    stringObject.split(separator,howmany)

separator :
必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

howmany :可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

var str="How are you doing today?"
document.write(str.split(" ") + "
") document.write(str.split("") + "
") document.write(str.split(" ",3))

结果:输出:

How,are,you,doing,today?
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
How,are,you

你可能感兴趣的:(Javascript学习笔记(十二)--内置对象之RegExp 对象(正则))