js正则表达式
JS正则表达式:
正则表达式是一种可以用于模式匹配和替换的强有力的工具;
1.基本语法:
/love/ 其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。
元字符:元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
2.常用的元字符:
“+” :元字符规定它前面一个字符必须在目标对象中出现连续一次或者多次;
“* ” :元字符规定它前面一个字符必须在目标对象中出现零次或者连续多次;
“?”:元字符规定他前面一次字符必须在目标对象中出现连续零次或者一次;
例子:
/fo+/ 可以与目标对象 "fool ”," fo","football" 等字母f后面连续出现一个或多个字母o的字符串匹配
/eg*/ 可以与目标对象 "easy”," ego","egg" 等字母e后面连续出现0个或多个字母g的字符串匹配
/wil?/ 可以与目标对象 "win”," wile" 等字母i后面连续出现0或一个个字母l的字符串匹配
3.为了适应匹配的不确定性,出现了限定符:
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配 n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
4.几个重要的元字符:
\s :用于匹配单个空格,包括tab和换行;
\S :用于匹配除了单个空格外的所有字符 ;
\d :用于匹配数字从 0-9;
\w :用于匹配字母,数字或下划线;
\W:用于匹配和\w相反的字符;
. :用于匹配除换行符以外的所有字符;
5.定位符:用于规定匹配模式在目标对象中的出现位置。
“^”定位符规定匹配模式必须出现在目标字符串的开头;
“$”定位符规定匹配模式必须出现在目标对象的结尾;
“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一;
“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,即匹配对象既不能作为
目标字符串的开头,也不能作为目标字符串的结尾。
例子:
/^hell/ 可以与目标对象中以 “hell”, “hello”或“hellhound”开头的字符串相匹配。
/ar$/ 可以与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配。
/\bbom/ 可以与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配。
/man\b/ 可以与目标对象中以 “human”, “woman”或 “man”结尾的字符串相匹配。
6.为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。
例子:
/[A-Z]/ 上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。
/[a-z]/ 上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。
/[0-9]/ 上述正则表达式将会与从0到9范围内任何一个数字相匹配。
/([a-z][A-Z][0-9])+/ 上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。
7.管道符 “|”:在多个不同的模式中任选一个进行匹配的话
例子:
/to|too|2/ 上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。
8.否定符 “[^]”:与定位符 “^” 不同,否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串
例子:
/[^A-C]/ 上述字符串将会与目标对象中除A,B,和C之外的任何字符相匹配。
一般来说,当“^”出现在 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]”时,则应当被视做定位符。
9.转义符“\”:用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“\”
例子:/Th\*/ 上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。
10.在构造正则表达式之后,就可以象数学表达式一样来求值,也就是说,可以从左至右并按照一个优先级顺序来求值。优先级如下:
1.\ 转义符
2.(), (?:), (?=), [] 圆括号和方括号
3.*, +, ?, {n}, {n,}, {n,m} 限定符
4.^, $, \anymetacharacter 位置和顺序
5. | “或”操作