百度网站优点,做一个好的网站,中山快速做网站公司,滨江专业网页制作哪家好http://www.ipc.me/regular_expression_07681.html文章错误#xff1a; 1 字符集的一些应用 第二个正则少了一个左方括号。 2 字符集的元字符 /[]x]/中的第一个]左边少了一个转义符#xff0c;在这种情况下转义符还是不能省略的。扩展 1 回车符 换行符 http://www.c…http://www.ipc.me/regular_expression_07681.html文章错误 1 字符集的一些应用 第二个正则少了一个左方括号。 2 字符集的元字符 /[]x]/中的第一个]左边少了一个转义符在这种情况下转义符还是不能省略的。扩展 1 回车符 换行符 http://www.cnblogs.com/yunf/archive/2011/04/20/2021830.html表达式引擎 正则表达式引擎室一种可以处理正则表达式的软件通常是大程序的一部分不用的表达式互不兼容JDK .NET。 两种类型文本导向(text-dereced/DFA) 和 正则导向 (regex-directed/NFA) 主流是NFA因为惰性/lazy quantifiers以及反向引用/backreferences只能在正则NFA中实现。 分辨两种引擎的方法 /reg|reg not/ 如果匹配到reg那么是正则导向如果是reg not是文本导向。 因为正则导向引擎总是返回最左边的匹配猴急。 特殊字符11 [ ] () ^ $ \ | . ? 2个括号 4 6 12 \ shift左边2个 在一些预编译C中\ 数量加倍不显示的字符 \t tab(0x09) \r 回车(0x0D) \n 换行(0x0A) 显示的字符是敲“ABC123”是可以看到的那换行/回车/Tab 键 是看不到的。连字符 - 可以指定范围如[0-9a-fxA-FX] 反字符 [^] q[^u]不会匹配iraq会匹配 Iraq is a country因为[]必须要匹配一个字符 如果你只想匹配一个q条件是q后面有一个不是u的字符我们可以用后面将讲到的向前查看来解决 在[]中 有 4 个元字符需要转义 ] \ ^ - 其他元字符不需要转义但是其中 2 个元字符(^-)的转义符不是必须的 只要将他们放在一个不可能使用到他们的特殊位置这样子可以增加可读性。 例如^只要不放到 [ 的后面就可以不用转义符。[x^] [-x] 常用的字符集简写 \d 0-9 取反\D \w A-Za-z0-9 取反\W \s 空白字符 空格符 Tab符 回车\r 换行\n 取反 \S [0-9] 仅仅想重复匹配那个数字 向后引用注意贪婪 * 都是贪婪的会尽可能的重复前导字符。会尽可能匹配一次 例子 var reg /./;// /[^]/ 或者 /.?/ var str This is a EMfirst/EM test; console.log(str.match(reg)); 表达式.会贪婪匹配到字符串结束最后还有个换行符.不匹配换行符换行符是怎么出来的然后表达式的剩余 部分 去匹配换行符匹配不成功然后进行回溯. 会丢掉匹配的最后一个字符 让去匹配直到成功为止。最后 停留在EMfirst/EM。匹配结果是EMfirst/EM。 的贪婪性使得表达式匹配到最左边的最长的匹配。 不管是惰性匹配还是贪婪匹配都会进行回溯会影响效率。 . [^\r\n](Window)不匹配换行符的历史原因为早期使用正则表达式的工具是基于行的。它们都是一行一行的读入一个文件 将正则表达式分别应用到每一行上去。在这些工具中字符串是不包含新行符(\n)的历史。现代的工具和语言能够将正则 表达式应用到很大的字符串甚至整个文件上去。 单行模式将整个文件一并读入此时.匹配新行符只影响.的匹配范围。 *** 多行模式和单行模式没有什么关系只是名字相似。 多行模式下只影响^ 和 $ 的匹配范围 ^ 可以匹配字符串开头字符串的开始位置也可以匹配行的开头即换行符\n之后的位置 $ 可以匹配字符串结尾字符串的结束位置, 也可以匹配行的结尾即换行符\n之前的位置 Regex.Match(“string”,”regex”,RegexOptions.SingleLine)可以激活单行模式。 var reg /(?:0[1-9]|1[0-2])[-/.](?:0[1-9]|[1-2]\d|3[01])/;//(?:)匹配但是不获取经常和| 配合使用 var str 12/01; console.log(str.match(reg)); 字符串开始和结束的锚定 ^$ ^$ 和一般的表达式符号不用他不匹配任何字符他会匹配字符之前或者之后的位置。 “first line\n\rsecond line”其中的 \n\r 在WINDOWS下是换行回车的标志正则表达式引擎提供一个选项可以是扩展 ^ 绝对锚定 \A 和 \Z 只匹配整个字符串的开始位置和结束位置即使你使用了多行模式。单词边界\b \B 也是一种锚 1)在字符串的第一个字符前的位置(如果字符串的第一个字符是一个“单词字符”) 2)在字符串的最后一个字符后的位置(如果字符串的最后一个字符是一个“单词字符”) 3)在一个“单词字符”和“非单词字符”之间其中“非单词字符”紧跟在“单词字符”之后 4) 在一个“非单词字符”和“单词字符”之间其中“单词字符”紧跟在“非单词字符”后面 *单词字符 指 \w [a-zA-Z0-9] 组与 后向引用 ()匹配后生成组\0代表整个背匹配的结果用\N来引用剩余的()经常会和|配合使用用来限制|的范围?: pattern不 获取匹配结果... ([A-Z][A-Z0-9]*)[^]*.*?/\1 可以用来匹配标签。 注意点 后向引用不能用于他自身([abc]\1) 后向引用不能用于字符集内部 (a)[\1b] 当对组使用重复操作符时缓存里后向引用内容会被不断刷新只保留最后匹配的内容。模式 i 大小写不敏感 s 单行模式 m 多行模式 (?i)te(?-i)st 能匹配TEst 原因就是?i开启了不敏感,随后又关闭了敏感变得敏感了。 转载于:https://www.cnblogs.com/cy056/archive/2013/03/11/regExp.html