三鑫西瓜霜

 

【笔记】正则表达式(一)基础语法

正则表达式使用单个字符来描述、匹配一系列匹配某个句法规则的字符串。

正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

包括两种字符:

  1. 普通字符(例如:字母)
  2. 特殊字符(元字符)

^[0-9]+abs$

^为匹配输入字符串的开始位置

[0-9]+匹配多个数字,[0-9]匹配单个数字,+匹配一个或者多个。

abc$匹配字母abc并以abc为结尾,$为匹配输入字符串的结束位置。

^[a-z0-9_-]{3,15}$

^开始标记

[a-z0-9_-]字母(a-z)数字(0-9)下划线_连字符

{3,15}字符的长度3-15

$结束标记

  •  +、*、?
  • +号代表前面的字符必须至少出现一次。
  • *号代表前面的字符可以不出现,也可以出现多次。
  • ?号代表前面的字符最多只可以出现一次。
  •  [aeiou]

匹配[...]中的所有字符,匹配所有a e i o u字母。

  • [^aeiou]

匹配除了[...]中字符中的所有字符,匹配字符串中除了a e i o u字母的所有字母。

  • [A-Z][a-z][0-9]

匹配所有大写字母、小写字母、数字

  •  [\s\S]

\s是匹配所有空白符,包括换行。

\S非空白符,不包括换行。

  • \w

匹配字母、数字、下划线。等价于[A-Za-z0-9_]

 非打印字符

字符 描述
\f 匹配一个换页符。
\n 匹配一个换行符。
\r 匹配一个回车符。
\s 匹配任何空白字符,包括空格、制表符、换页符等。
\S 匹配任何非空白字符。
\t

匹配一个制表符。

\v 匹配一个垂直制表符。
\cx 匹配有x指明的控制字符。

 特殊字符

特殊字符 描述
$ 匹配输入字符串的结束位置。
() 标记一个子表达式的开始和结束位置。
* 匹配前面的子表达式零次及其+
+ 匹配前面的子表达式一次及其+
. 匹配除换行符之外的的任何单个字符
[ 标记一个中括号表达式的开始
? 匹配前面的子表达式零次或一次
\  
^ 匹配输入字符串的开始位置。在方括号中使用是取反的效果。
{ 标记限定符表达式的开始
| 指明两项之间的一个选择

 

 /作为特殊字符的转移表达形式

限定符

字符 描述
* 零次及其+
+ 一次及其+
至多一次
{n} 匹配确定的n次
{n,} 匹配不少于n次
{n,m} 匹配范围限定在n-m次中

 

*、+都是贪婪的。他们会尽可能多的去匹配。在他们后面加上一个就可以实现非贪婪或者最小匹配。

定位符

字符 描述
^ 匹配输入字符串开始的位置。
$ 匹配输入字符串结尾的位置。
\b 匹配一个单词边界,既单词与空格间的位置。
\B 非单词边界匹配。

通过定位符还能让正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。

不能将限定符与定位符一起使用。

 \b、\B用法

  • /\bCha/    匹配Chapter开头的Cha字符
  • /ter\b/      匹配Chapter末尾的ter字符
  • /\Bapt/     匹配Chapter中间的apt字符

使用多个分组进行匹配。

选择()

 

/([1-9])([a-z]+)/

匹配开头为一个1-9的数字,之后是连续字母的字符串

 

非捕获源

exp1(?=exp2)  查找exp2前面的exp1

(?<=exp1)exp2  查找exp1后面的exp2

exp1(?!exp2)  查找后面不是exp2的exp1

(?<!exp1)exp2  查找前面不是exp1的exp2

 

()中的是约束条件,在()外的才是真正要去匹配的内容。

 

 反向引用

 使用\n访问缓冲区。将相关匹配从左往右存储在表达式中。

 (9条消息) 正则表达式中的反向引用(转载)_黄道婆的专栏-CSDN博客

 

var str = "Is is the the a a a cost of of gasoline going up up";
var patt1 = /\b([a-z]+) \1\b/ig;

  以上代码可以取到两个连续的单词。

 

 

正则表达式 – 教程 | 菜鸟教程 (runoob.com)

posted on 2021-10-04 15:54  三鑫西瓜霜  阅读(79)  评论(0编辑  收藏  举报

导航