正则表达式

javascript篇

字符类

符号 含义
[...] 方括号内的任意字符
[^...] 不在方括号内的任意字符(没有前面的反斜线。。。)
. 代表除换行符以外的任意字符
\w 代表字母或数字或下划线或汉字
\W \w的补集
\s 代表任意的空白符(包括空格,制表符(Tab),换行符,中文全角空格等)
\S \s的补集
\d 代表数字
\D \d 的补集
\b 代表单词的开始或结束
^ 代表字符串的开始
$ 代表字符串的结束
\ 来转义从而匹配元字符

直接量字符

通过反斜线\进行转义直接匹配

符号 含义
\t 制表符
\n 换行符
\f 换页符
\r 回车符

用如下符号来代表某个可能字符的集合

| 用于把不同的规则分开(分支条件)或 相当于运算符|| 使用分枝条件时,要注意各个条件的顺序如果发现了左边的匹配项,就自动忽略右边的匹配项。
( ) 作用是完整的定义子模式。

例如:[.?!]匹配 . 或者 ? 或者 !
[0-9]代表的含意与\d就是完全一致的:一位数字;

重复:

符号 含义
* 重复零次或更多次 {0,}
+ 重复一次或更多次 {1,}
? 重复零次或一次 {0,1}
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次(至少n次但不能超过m次)
  • 贪婪与非贪婪匹配:上面表格中列的是贪婪匹配,即:尽可能多的匹配重复字符,而且允许后续的正则表达式继续匹配/a+b/g匹配“aaaab”。而非贪婪匹配尽可能少的匹配,只须在待匹配的字符后跟随一个问号即可。“??”,“+?”,“*?”非贪婪模式/a+?b/g匹配“aaaab”中的“ab”.

  • 然后剩下的符号基本就是原意了,如 邮箱符号 @ 就表示邮箱符号,等号 = 就表示等号, 横杠 - 就表示横杠等

指定匹配位置

符号 含义
^ 匹配字符串的开头,多行检索中,匹配一行的开头
$ 匹配字符串的结尾,多行检索中,匹配一行的结尾
\b 匹配一个单词的边界
\B 匹配非单词边界的位置
小例子:

邮箱的验证:/^(\w+\.)*\w+@\w+(\.\w+)+$/;格式:字母数字点组合+@+字母数字+点+字母数字;
手机号验证:/^(\+\d{1,4})?\d{7,11}$/;格式:手机号有时候会在前面加国际区号的前缀,如中国:+86。手机号最多就是11位,其他国家有用8位的,也有用7位,10位的都有。最短是7位,最长是11位。

修饰符

符号 含义
i 执行不区分大小写的匹配
g 执行一个全局匹配,并不是找到第一个之后就停止
m 多行匹配

用于模式匹配的String方法

  1. String.search( ) 参数是正则表达式(或者会自动调用RegExp()构造函数进行转化)返回第一个与之匹配的子串的起始位置,或者找不到匹配的字符串,返回-1.不支持全局匹配,会忽略正则表达式中修饰符g。
  2. String.replace(patten,string) 用于执行检索和替换操作,第一个patten是正则表达式,第二个参数string是要进行替换的字符串。会对调用它的字符串进行检索。如果第一个参数不是正则表达式而是字符串的话,直接搜索这个字符串。
  3. String.math() 唯一参数是正则表达式,(或者会自动调用RegExp()构造函数进行转化)返回一个由匹配结果组成的数组
  4. String.split() 将调用它的字符串拆分成一个子串组成的数组。参数可以是一个符号或者一个正则表达式。

参考资料:

你可能感兴趣的:(正则表达式)