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方法
- String.search( ) 参数是正则表达式(或者会自动调用RegExp()构造函数进行转化)返回第一个与之匹配的子串的起始位置,或者找不到匹配的字符串,返回-1.不支持全局匹配,会忽略正则表达式中修饰符g。
- String.replace(patten,string) 用于执行检索和替换操作,第一个patten是正则表达式,第二个参数string是要进行替换的字符串。会对调用它的字符串进行检索。如果第一个参数不是正则表达式而是字符串的话,直接搜索这个字符串。
- String.math() 唯一参数是正则表达式,(或者会自动调用RegExp()构造函数进行转化)返回一个由匹配结果组成的数组。
- String.split() 将调用它的字符串拆分成一个子串组成的数组。参数可以是一个符号或者一个正则表达式。
参考资料:<Javascript权威指南第六版---第十章>
网友评论