JavaScript 正则表达式

正则表达式:

常常缩写为"regex"  或 "regexp" 是用于帮助程序员匹配,搜索和替换文本的模式。

语法(格式):

/pattern/modifiers;

解释:

/ 模式/ 修饰符

正则表达式的方法:

// 使用测试方法:

let myString = "Hello";
let myRegex = /He/;
let result = myRegex.test(myString);

结果: result = true

 用列:

1.匹配字符串:

1. 匹配字符串

let wa = "Some is hidding in the text.";
let waRegex = /hidding/;
let result = waRegex.text(wa);

结果:  true


2. 同时使用多种模式匹配字符串  使用 "|"

let wa = "Some is hidding in the text.";
let waRegex = /hidding|in/;
let result = waRegex.text(wa);

解释:
同时匹配 hidding 和 in 两个字符串 在 wa 中;

 2.提取匹配项 方法match():

通过match() 方法可以提取找到的实际匹配项,并返回匹配的字符串;

let wa = "Some is hidding in the text.";
let waRegex = /Some/;
let result = wa.match(waRegex);

结果:
result = Some;

3.忽略大小写(i):

let wa = "Some is hidding in the text.";
let waRegex = /some/i;
let result = waRegex.text(wa);

解释:
查找字符串 some 且忽略大小写(i), Some,some,soMe....等等, 都可以匹配的到

4.全局匹配:

let wa = "Some is hidding in the text.";
let waRegex = /i/g;
let result = waRegex.text(wa);

解释: 
g 使用全局访问的方式,就不会发现第一个匹配项就返回;而是遍历一遍整个字符串。

如果没有加 g 只能提取或搜索一次模式匹配。

5.使用通配符:

let wa = "fun sun pun nun bun";
let waRegex = /un./;
let result = waRegex.test(wa);

结果:
字符串 fun sun pun nun bun 都会被匹配到

语法:
 
/有共性部分的字符 ./ 

. 是通配符,将匹配任何一个字符

6.单个字符串的多种可能性匹配:

let i = "Big";
let a = "Bag";
let u = "Bug";
let waRegex = /B[iau]g/; 
i.match(waRegex);
a.match(waRegex);
u.match(waRegex);

结果:
Big,Bag,Bug 都能匹配到

将不确定的词放到 [] 中,将会匹配到所有可能的词

7.匹配字母表中的字母:

let wa = "The quick brown fox jumps over the lazy dog.";
let waRegex = /[r-z]he/; 

解释;
匹配 r 到 z 之间可能匹配到的字符串

使用 "-" 连字符来定义范围


匹配字母和数字:

let quoteSample = "Blueberry 3.141592653s are delicious.";
let myRegex = /[a-z0-9]/ig;

解释:
匹配所有 字母(a到z)和数字(0到9),而且全局搜索,不区分大小写; 

8.匹配单个未指定的字符:

let quoteSample = "3 blind mice.";
let myRegex = /^aeiou^0-9/gi;

解释: 
匹配所有非字母和非数字的字符串,全局搜索,不分大小写

使用 " ^ " 否定字符集
需要在开始括号后面和不想匹配的字符前面 

作用:是否定此标志之后的匹配项

9.匹配出现一次或多次的字母

let difficultSpelling = "Mississippi";
let myRegex = /s+/g;

解释:
匹配 s 出现出现的所有符合条件的 's' 'ss' 'sss'

使用 + 符号来检查


匹配出现零次或多次的字符

let chewieQuote = Aaaaaaaaaaaaaaaarrrgh!
let chewieRegex = /a*/gi;
let result = chewieQuote.match(chewieRegex);

解释:
全局搜索匹配所有出现的 a ,不分大小写 

10.用惰性匹配来查找字符:

let text = "<h1>Winter is coming</h1>";
let myRegex = /<.*?>/; 

解释:
匹配最短的符合的项, 

例如:
在 titiatiat 中 使用正则表达式 /t[a-z]*?i/
会返回 ti 只返回最短的匹配到的
这就是惰性匹配

而
在 titiatiat 中 使用正则表达式 /t[a-z]*i/
会返回最长的 titiati 
这就是和惰性匹配相反的:贪婪匹配。

惰性匹配比贪婪匹配多了个 ? 就是使用 ? 符号来将此模式变成惰性匹配

11.匹配字符串的开头

let rickyAndCal = "Wo hen shuai.";
let calRegex = /^Wo/;

解释:
^ 不仅可以来创建一个否定字符集,
还可以用来判断该字符串,是否在开头。


匹配字符串的末尾:

let rickyAndCal = "Wo hen shuai.";
let calRegex = /shuai$/;

解释:
使用 $ 锚点字符来匹配字符串的末尾

提升练习:

let quoteSample = "The five boxing wizards jump quickly.";
let alphabetRegexV2 = /\w+/; 

解释:
在 JavaScript 中与字符串匹配最接近的元字符是 \w ,
这个缩写等同于: /[A-Za-z0-9_]/

匹配所有字母字符 和 数字字符 


匹配所有数字:

let movieName = "2001: A Space Odyssey";
let numRegex = /\d/g; 

解释:
使用 \d 来匹配所有数字 

元字符 \d 查找数字

 
匹配所有非数字:

let movieName = "2001: A Space Odyssey";
let numRegex = /\D/g; 

解释:
匹配所有非数字,
\D 相当于 [^0-9]


限制可能的用户名:
要求:
1.用户名只能是数字字母字符。
2.用户名中的数字必须在最后。 数字可以有零个或多个。 用户名不能以数字开头。
3.用户名字母可以是小写字母和大写字母。
4.用户名长度必须至少为两个字符。 两位用户名只能使用字母。

let username = "Jack";
let usernameRegex = /^[a-z][a-z]+\d*$|^[a-z]\d\d+$/i;
// let usernameRegex = /^[a-z]([0-9]{2,}|[a-z]+\d*)$/i; 第二种解法


解释:
1. ^[a-z] 输入开始必须是字母
2. [a-z]+ 以下字符是字母
3. \d*$   输入以0位或更多位数字结尾
4.   |        或
5.  ^[a-z] 第一个字符是字母
6.  \d\d+  以下字符是2位或更多位数字结尾
7.  $      输入结尾

1. ^[a-z]     输入开始必须为字母
2. [0-9]{2,0} 以两个或多个数字结尾   " { number1 , number2 } " { 上限 , 下限 }
3.    |          或
4.  [a-z]+    下一个有一个或多个字母
5.  \d*       并以零个或多个数字结尾
6.  $         输入结尾
7.  i         忽略大小写

12.匹配空白字符:

let sample = "Whitespace is important in separating words";
let whiteSpace = /\s/g;

解释:
使用 \s 搜寻空格,此模式可以匹配空格,回车符,制表符,换页符和换行符。


匹配非空格:

let sample = "Whitespace is important in separating words";
let whiteSpace = /\S/g;

解释:
使用 \S 搜寻非空白字符,不匹配空格,回车符,制表符,换页符和换行符。
类似元字符: ^[\r\t\f\n\v]

13.指定匹配上限和下限

let ohStr = "Ohhh no";
let ohRegex = /O{3,5}h/

解释;
使用 数量说明符号 "{}" ,其中两个数字代表上限和下限


只指定匹配下限

let ohStr = "Ohhh no";
let ohRegex = /O{3,}h/

解释:
使用指定下限 在{}只写一个数字后面跟一个逗号;


指定匹配的确切数量

let timStr = "Timmmmber";
let timRegex = /Tim{3}ber/;

解释;
此处只匹配 3 个 m,结果为Timmmer

14.检查全部或无:

let favWord = "favorite"; // 美式英文
let favWord1 = "favourite"; // 英式英文 
let favRegex = /favo?rite/

解释:
用于检查这些不确定情况,我们使用问号 ? 指定可能存在的元素
这个符号会检查前面的零个或一个元素。

结果:
favorite ,  favourite  都能匹配到

15.正向先行断言和负向先行断言:

先行断言(lookaheads): 是告诉JavaScript 在字符串中向前查找的匹配模式。

正则表达式的先行断言(lookahead)和后行断言(lookbehind)icon-default.png?t=M666https://blog.csdn.net/kaizi524/article/details/79149323?ops_request_misc=&request_id=&biz_id=102&utm_term=%E8%B4%9F%E5%90%91%E5%85%88%E8%A1%8C%E6%96%AD%E8%A8%80&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-79149323.142^v32^pc_rank_34,185^v2^control&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值