- \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分别是什么?
\d
:是一个正则表达式中预定义的模式,匹配匹配0-9之间的任一数字,相当于[0-9]
\w
:也是预定义的模式,匹配大小写字符,数字和下划线,相当于[a-zA-Z0-9_]
\s
:预定义模式,匹配空格(包括制表符、空格符、断行符等),相当于[\t\r\n\v\f]
[a-zA-Z0-9]
:表示字符类,即匹配a-z
、A-Z
、0-9
之间任意一个即可,其中连字符号-
是连续范围的简写
\b
:表示的是词的边界,即一个单词字符和非单词字符的交界,注意:\b
并不匹配任何字符,只匹配一个位置
.:是正则中的元字符,即不表示字面的意思,有其他的含义,点字符可以匹配除回车\r
,换行\n
,行分隔符\u2028
和段分隔符\u2029
以外的所有字符
*:也是元字符,作为量词,表示的是0次或者多次
+:元字符,作为量词,表示一次或者多次
?:元字符,作为量词,表示0次或者1次
x{3}::匹配出现3次的x字符
^:元字符,匹配字符串的开始位置
$:元字符,匹配字符串的结束位置 - 贪婪模式和非贪婪模式指什么?
贪婪模式:当使用量词*
和+
的时候默认就是贪婪模式,表示尽可能多的匹配,直到不能匹配为止,例如
"this is <em>test</em>".match(/<.*>/)//"<em>test</em>"
我们的原意是匹配<em>,但是因为贪婪模式会尽可能多的匹配,所以当第一次匹配到<em>的时候不会停止,而是继续往下查找,直到不能匹配为止
非贪婪模式:当*?
和+?
时候触发非贪婪模式,也可以称为惰性模式,就是一旦满足条件就不再往下匹配
"this is <em>test</em>".match(/<.*?>/)//"<em>"
当使用非贪婪模式的时候,一旦匹配到满足条件的<em>,就返回了结果不再继续往下匹配