正则表达式的构成:
- 匹配模式:双斜杠之间的内容,用来描述字符串特征;
- 标志位:第二个斜杠后面跟随的字母,是g、i、m、s、x这五个字母的组合。
例:
var regExp:RegExp = /someString/g;
正则表达式也可以使用正则表达式的构造函数进行声明:
var regExp:RegExp = new RegExp("someString", "g");
标志位:
- g(global):匹配多个,不加该标识符的话,系统将在找到第一个符合匹配条件的字符串后停止匹配
- i(ignoreCase):不区分大小写的匹配,应用于A~Z和a~z字符
- m(multiline):设置此标志后,$和^可以分别匹配行的开头与结尾
- d(dotall):设置此标志后,“.”可以匹配换行符(\n)
- x(extended):允许拓展的正则表达式。可以在正则表达式中键入空格,它将作为模式的一部分被忽略,从而可以更加清晰可读地键入正则表达式代码
文字符号备忘:
- 普通文字符号:A~Z,a~z,0~9,以及不是元字符的其他符号(如#、=)
- 元字符:11个被保留做特殊用途的符号:[ ] \ ^ $ . | ? * + ( )
- 不可见字符:
- \cx 匹配由x指明的控制字符。如\cM匹配一个Control-M或回车符。x值必须为A~Z或a~z之一,否则c将被视为一个原意'c'字符。
- \f 匹配一个换页符,等价于 \x0c 和 \cL
- \n 匹配一个换行符,等价于 \x0a 和 \cJ
- \r 匹配一个回车符,等价于 \x0d 和 \cM
- \s 匹配任何空白字符,包括空格、制表符、换页符等等,等价于 [\f\n\r\t\v]
- \S 匹配任何非空白字符,等价于[^\f\n\r\t\v]
- \t 匹配一个制表符,等价于\x09 和 \cI
- \v 匹配一个垂直制表符,等价于 \x0b 和 \cX
元字符:
- [ ],用来表示字符集。字符集是指由中括号中定义的字符集合,字符集中的字符只要有一个符合特征描述,那么就会被认为匹配。
- “ - ”表示连字符,可以用来定义字符集的字符范围,如[ a-z ],[ A-Z ],[ 0-9 ]。
- “ ^ ” 取反符号,即对方括号中描述的字符集取反,其必须在“ [ ”后面,否则它将作为普通的字符“ ^ ”,没有取反作用。
- “ \ ” 转义字符,需要转义的字符包括:
- 字符串中的单引号、双引号和反斜杠“ \ ”;
- 使用“ / 匹配字符 / 标志位 ”方式定义正则表达式时,字符描述中涉及的无特殊作用的元字符。
- 正则表达式字符集中无特殊作用的元字符“ ] \ ^ -”。其中“ ^ ”和“ - ”符号放在不会有特殊用途的地方时,不需要转义。如“ ^ ”未跟随在“ [ ”之后,“ - ”前面或后面没有字符。例:var reg:RegExp = /g[eo^-]t/;
- “ . ” 用来表示任何字符(除新行符“\n”除外,大多数语言的正则表达式在默认情况下都不匹配新行符。)
- “ | ” 选择符,用来匹配多个可能的正则表达式中的一个,其优先级在正则表达式中最低。
- ( ),括号内的表达式将被当做一个整体进行操作。
正则表达式总是返回最左边的匹配结果,而非最合适的匹配结果。
如果要匹配的字符串中有何元字符相同的字符时,那么要用反斜杠“\”来进行转义。(如果用正则表达式构造函数来匹配的话,不需要转义。)