正则表达式中的特殊字符:
^ :匹配字符串的开头,设置m(multiline)标志后,还匹配行的开头,用在字符类开头反转集合的意义:/[^a-z0-9]/ 匹配除小写字母和数字外的任意字符,这种用法^一定要放在开头否则失去意义
$ :匹配字符串的结尾。设置m(multiline)标志后,还匹配换行(\n)字符前面的位置
\ :对特殊字符的特殊元字符含义进行转义
. :匹配任意单个字符,只有设置s(dotall)标志是,点才匹配换行字符(\n)
* :匹配前面字符 >= 0 次
+ :匹配前面字符 >= 1 次
? :匹配前面字符 0-1 次
() :定义一个组, 使用方法:
1、限制逻辑“或” 字符的范围: /(a|b|c)d/
2、定义数量表示符的范围:/(walla.){1,2}/
3、用在逆向引用中:/(\w*) is repeated \1/ "\1" 匹配前面第一个()
[] :定义字符类.
1、字符类定义单个字符可能的匹配:/[aeiou]/ 匹配所指定字符中的任意一个
2、在字符类中用 "-" 指定字符的范围。/[A-Z0-9]/,在字符类中要转义 "-"和"]"用 "\", 在字符类中,元字符通常被看做一般字符
| :逻辑或
元序列:
{n},{n,},{n,n} :指定前一项目的数量或数量范围 /A{27}/ 匹配27次 /A{3,}/ 匹配 >= 3 次 /A{3,5}/ 匹配 >=3 <=5次
\b :匹配单词字符和非单词字符之间的位置。如果字符串中的第一个或最后一个字符是单字符,则也匹配字符串的开头或结尾。
\B :匹配两个单词字符之间的位置。也匹配两个非单词字符之间的位置。
\d : 匹配十进制数字
\D : 匹配非十进制数字
\f : 匹配换页符
\n : 匹配换行符
\r : 匹配回车符
\s :匹配任何空白字符(空格、制表符、换行符或回车符)
\S : 匹配任何非空白符
\t :匹配制表符
\unnnn :匹配字符代码由十六进制数字 nnnn所指定的unicode字符。例如 \u263a是一个笑脸字符
\v :匹配垂直换页符
\w :匹配单词字符 (A-Z、a-z、0-9 或 _ )不匹配非英文字符
\W : 匹配除单词字符以外的任意字符
\xnn :匹配所指定ASCII (由十六进制数字nn定义)值得字符。/[\x80-\x9A]/ 匹配扩展ASCII字符集中的任意字符
标志和属性:
g :global 匹配多个匹配
i : ignoreCase 不区分大小,应用于 A-Z和a-z字符
m : multiline 设置此标志后, $ 和 ^ 可以分别匹配行的开头和结尾
s : dotall 设置此属性后 "." 可以匹配换行符
x : extended 允许扩展的正则表达式。您可以在正则表达式中键入空格,它将作为模式的一部分被忽略。这可使您更加清晰可读地键入正则表达式代码
注意:
默认情况下,正则表达式执行"无限匹配"。正则表达式中的任何子模式(如 .*)都会尝试在字符串中匹配尽可能多的字符,然后再执行正则表达式的下一部分。例如:
/<p>.*<\/p>/ 将匹配整个 <p>Paragraph 1</p><p>Paragraph 2</p> 字符串,如果想要只匹配一个<p></p>则要用"?"将其更改为"惰性数量表示符" ,/<p>.*?<\/p>/