正则表达式
一、分为搜索和替换两种情况。
\b[Cc][Aa][Rr]\b
//把car、CAR、Car,或CaR都找出来,而不找那些包含car等的单词
//匹配纯文本
Ben
//.字符可以匹配任何单个的字符、字母、数字甚至是.字符本身。
sales.
..a.
.a.\.xls
//字符集合
[ns]a.\.xls
[Rr]eg[Ee]x
[ns]a[0123456789]\.xls
[ns]a[0-9]\.xls
[A-Za-z0-9]
#[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]
//取非匹配
[ns]a[^0-9]\.xls
//对特殊字符进行转义
myArr[0]//只能匹配到myArr0
myArr\[0\]//匹配到myArr[0]
myArr\[[0-9]\]
\\ // 匹配到\
//匹配空白字符
\r\n\r\n //\r\n匹配一个回车加换行组合
//一些常用的字符集合可以用特殊元字符来代替--类元字符
\d //任何一个数字字符,[0-9]
\D //任何一个非数字字符,[^0-9]
myArr\[\d\] // myArr[0-9]
\w //[a-zA-Z0-9_]任何一个字母数字下划线
\W // [^a-zA-Z0-9_]任何一个非 字母数字下划线
\s //任何一个空白字符,[\f\n\t\r\v]
\S //任何一个非空白字符,[^\f\n\r\t\v]
\b //匹配退个字符,不在类元字符之列
//匹配十六进制
\x0A //ascii为10,即\n
//匹配八进制
\011 // ascii为9,即\t
//使用POSIX字符类
#[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]] // 等价于#[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]
绝大多数正则表达式引擎的默认行为是只返回第1个匹配结果。
转义-\是一个元字符(metacharacter,表示“这个字符有特殊含义,而不是字符本身含义”)。
正则表达式经常被简称为模式,它们其实是一些由字符构成的字符串。
不能使用一个[来匹配[本身,也不能使用.来匹配.本身。
JavaScript不支持在正则表达式里使用POSIX字符类。
空白元字符
POSIX字符类(t, v后有一个空格)
//匹配一个或多个字符
//+匹配一个或多个字符(+最少也要匹配一个字符;不匹配零个字符的情况)
a+ //匹配一个或多个连续出现的a
[0-9]+ // 匹配一个或多个连续的数字。
[0-9+] //定义了一个由数字0到9和+构成的字符集合
\w+@\w+\.\w+ // 电子邮件地址text@text.text
// 虽然ben.forta@forta.com是一个完全合法的电子邮件地址,但这个正则表达式只能匹配forta(而不是ben.forta)
// -->改进
[\w.]+@[\w.]+\.\w+ // 此处[\w.]和[\w\.]一样
// -->改进
\w+[\w.]*@[\w.]+\.\w+
* // 匹配零次或多次
B.* Forta // B Forta、B. Forta、BenForta和其他有类似规律的组合
? //?只能匹配一个字符(或字符集合)的零次或一次出现
https?://[\w./]+ //http 或者 https
// 如果你想为重复匹配次数设定一个精确的值,把那个数字写在\{和\}之间即可。
#[a-fA-F0-9]{6} // 连续出现6次
// {2, 4}的含义是最少重复2次、最多重复4次
\d{1,2}[-\/]\d{1,2}[-\/]\d{2,4} //10-6-2004, 01-01-01【/的转义序列\/】
// 匹配“至少重复多少次”
{3,} // 表示至少重复3次,与之等价的说法是“必须重复3次或更多次”。
\d+: \$\d{3,}\.\d{2} // \d{2}匹配小数点后面的两位数字
<[Bb]>.*</[Bb]> // 会匹配到<b>ak</b>and<b>hi</b>作为一个整体
<[Bb]>.*?</[Bb]> //会匹配到<b>ak</b>和<b>hi</b>
+是一个元字符。如果需要匹配+本身,就必须使用它的转义序列+。
贪婪型元字符会尽可能地从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到第一个匹配时为止。用懒惰型元字符来防止过度匹配。