正则表达式

RegExp知识大纲
修饰符
i : 表示忽视大小写
g : 表示全局匹配
m : 表示多行匹配(只有在匹配首尾的时候才会用到)
解释:要想匹配一段字符串中的什么什么开头的字符,就必须先使用全局匹配,这样才可以找到所有的符合字符串,但是有一点是,字符串换行才会有首尾,但是g又不会识别'\n',不会认为他是开头,这时候就要用到m,来配合执行 全局操作
表达式
/asdfdaf/匹配特定的字符串
[0-9]表示某一位为0~9
[A-Z]表示匹配字母A~Z
[a-z]表示某一位为a~z
[0-9A-z]表示匹配09或者AZ或者a~z
[fdahg]表示只能是这几个字符中的一个
[^fdahg]表示只能是除这之外的其他字符
/(abc|bcd)/表示或者的关系(|)
元字符
\w 表示这一位必须是09Az还有'_'(下划线)
\W 表示这一位与\w相反
\d 表示数字0~9
\D 表示与\d相反
\s 表示空白字符(\r行结束 \t制表符 \n换行符 \f换页符 \v垂直制表符)
\S 表示与\s相反
*/ /里面表示空格,直接写在正则里面就可以匹配
\b 表示匹配单词边界eg:/\ba\b/表示匹配a的前面是单词边界,后面也是单词边界,就是说a 是一个单词
\B 表示非单词边界
. ===[^\r\n]表示除了\r和\n,也就是说他无法识别\r\n,除此之外的都可以
\u(00~10)0000 - \u(00~10)ffff 可以表示第一(十)层所有的编码
量词
贪婪匹配:能多就不少。。非贪婪匹配就是在量词后面加上?
n+ 表示n连续出现的次数可以是1~多
n
表示n出现的次数可以是0~多个
n? 表示n出现的次数为{0,1}(注意费贪婪匹配的时候会有两个问号)
n{x} 表示每次出现的个数为x
n{x, y} 表示每次出现的个数为{x,y}
n{x, } 表示每次出现的个数为{x, }与n+效果一样
^ 表示开头结尾 reg.exec(str)可以匹配符合的字符串,但是每次只会返回符合的一个,即使里面加上g,配合reg.lastIndex使用 exec()执行之后会返回一个类数组,类数组中有匹配的值,index:光标的位置,配合lastIndex,原串三个值, 在执行就会匹配下一个符合的字符串,index就会发生变化。直到匹配结束,返回null,然后从头在开始匹配 /(\w)\1(\w)\2(\w)\3/(\w)会成为子表达式,后继可以用提取出来如果想要匹配重复的字符可以使用表示匹配aabbcc类型的字符串,其中\1表示匹配第一个()里的内容后面 也可以跟多个\1\1\1,在使用reg.exec()方法的时候会出现()里选中的值,出现在匹配值的后面
str.search(reg),匹配找到的字符串的索引位置,不会执行全局匹配,索引不会发生变化,如果里面填的不是reg 那么,会匹配所填字符串的索引位置
str.match(reg): 输出匹配的字符
str.split(reg):按照reg来分割str(于预期的想的不一样)
重点 str.replace():原来的意思是可以替换一个字符 但是运用了正则表达式,就可以为所欲为了。
$符号会引用正则表达式里面的(\w)\1表示将\w的子表达式复制一份(也就是\w所代表的值)

,倒置字符串的实现 替换的内容也可以是一个函数里面有参数分别是按照reg匹配之后获取的的字符串1,$2……
正向预查和非正向预查
? = n 作为限制条件表示匹配任何其后紧跟字符串n的字符串
? ! n 表示匹配任何其后没有跟字符串n的字符串
所有关于正则表达式的内容就这些了
总结:(1)遇到匹配重复出现的的字符串,就会用到(\w)\1*

.(除了\r,\n之外所有的字符) 与 . (只匹配.) 表示的含义不一样

(\w)\1 ---->匹配两个重复的字符

((\w)\1)+ ---->匹配多个 两个重复的字符2个,4个,……

(\w)\1+ ---->匹配{2,}重复的字符

匹配两个字符之间的空白用 /()/g

(\w)\1* 和 ((\w)\1)* 结果是不一样的

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