JS里的正则表达式
正则表达式,用于描述字符的模式。比如,「范冰冰」和「李冰冰」的共同模式是第二和第三个字是一样的。
按字面意思匹配
最简单的,判断一个词是不是包含 ing,那么/ing/
就 ok 了。
代表一类字符的特殊符号
\d
: 数字\s
: 任意的空白符号,包括制表符、空格、换行等等。\w
: 等价于[a-zA-Z0-9]
.
: 除了换行符以外的字符\S
: 除了空白符号以外的字符\W
: 等价于[^a-zA-Z0-9]
\D
: 除了数字以外的字符,等价于[^0-9]
选择
[]
当然,编程时面临的问题肯定不会都这么简单。要匹配包含 car 或者 cat 的字符串,a 后面是 r 或 t 中间的一个,/ca[rt]/
,中括号代表在括起来的字符中间选一个。
|
那如果要选择的多余一个字符呢?比如「ferret, ferry, ferrai」里面的一个。 /ferr(et|y|ai)/
重复
?
如果,一个字符可能出现也可能不出现呢?「pop」或「prop」其中一个。 /pr?op/
。问号,表示它前面的字符可能出现也可不出现。
+
如果一个字符可能出现一次,但也可能连续出现很多次呢?比如,「wow, woow, wooooow」。/wo+w/
*
如果一个字符可能不出现,也可能出现一次,甚至连续多次,比如,「1, 10, 1000, 1000000」。 /10*/
{}
- 如果一个字符是重复了特定次数,比如5-9位的 qq 号。
/\d{5,9}/
。 - 如果大括号里逗号后面的数字空缺,
/\d{5,}/
表示至少五位。 - 如果大括号里的第一个数字空缺,
/\d{,10}/
,表示 0-10 位。
位置
单词边界
\b
表示单词的边界,包括开始和结束。比如,要想匹配「google」或[gooooogle],/\bgo{2,}gle\b/
,这时,就不会匹配「agoogle」。
字符串边界
字符串边界和单词边界的区别在于,字符串边界是针对输入的整个字符串而言的。比如,输入的字符串是hello, world!
,字符串边界在「h」之前以及「!」之后。而单词边界在于两个单词的前后。表示字符串边界的符号分别是^
和$
,分别表示字符串的开始和结束。