js-正则表达式边界符和前瞻后顾的使用-保证你看明白

Posted 南风晚来晚相识

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js-正则表达式边界符和前瞻后顾的使用-保证你看明白相关的知识,希望对你有一定的参考价值。

创建正则表达式第两种方式

1==>通过new字符的方式,来创建正则表达式
2==>通过创建字面量的方式去创建

1.new字符的方式
let regexp=new RegExp(/123/)

2.字面量的方式去创建正则
console.log(/123/.test(12345));

/正则规则/.test(\'被检测的值\')

test:正则对象方法,用于检测字符串是否符合该规则。
该对象会返回true或false,其参数是测试字符串.
true表示符合规则,false表示不符合规则。
简单使用
console.log(/123/.test(12345)); //返回true

判断字符是否包含某个字母

// 查看字符串中是否包含某一个qq这个字母.
let str1=\'qq飞车\'
console.log( /qq/.test(str1) ) //true
只有该字符串str1中只要包含qq就可以。就会返回true

边界符

这里我们介绍两个。
^ ===> 以什么开头
$ ===> 以什么结尾
如果^和$放在一起,就是精准匹配的哈。

字符串中是否以q这个字母开头(^)

// 匹配字符是否以q开头的字符
let str1=\'qq飞车\'
console.log( /^q/.test(str1) ) //true
tip:判断是否以某个字母开头使用 ^

字符串中是否以q这个字母结尾($)

// 匹配以q结尾的字符
let str1=\'qq飞车\'
let str2=\'飞车qq\'
console.log( /q$/.test(str1) ) //false
console.log( /q$/.test(str2) ) //true

扩展:以1512这个数字结尾怎么判断呢?
let str1=\'qq飞车1512\'
let str2=\'飞车qq1512 \'
console.log( /1512$/.test(str1) ) //true
console.log( /1512$/.test(str2) ) //false 最后有空格,所以是false

以abc开头,以abc结尾

// 正则的规则是以abc开头,以abc结尾
console.log(/^abc$/.test(\'abc\')); //true

console.log(/^abc$/.test(\'abcabc\')); //false
// 这个有些小伙伴觉得是返回也应该是true,但实际确实false
// 认为它是以abc开头的,以abc结尾的。
// 其实并不想的那样,他是以abcabc开头的哦,以abcabc结尾的。
// 所以返回false

字符类

1==> 字符类:[] 表示有以系列的字符可以选择,
只要匹配其中一个就可以了。

let str1=/[abc]/ //是要包含a,或者b,或者c,就行。
let cont=\'hello a\'
console.log(str1.test(cont));//true

ps:字符类跟下面这个有所有不同的
console.log(/123/.test(12345)); //返回true
这个是必须包含123,并不是包含其中一个就行。需要注意一下哈~
let str1=/^[abc]$/; //三选一,只有a,或者b,或者c开头,结尾的字符才返回true
console.log( str1.test(\'a\')) //true
console.log( str1.test(\'b\')) //true
console.log( str1.test(\'c\')) //true
console.log( str1.test(\'abc\')) //false
console.log( str1.test(\'ab\')) //false
console.log( str1.test(\'ac\')) //false
26个英文小写字母中的任意一个。精准匹配
let str=/^[a-z]$/
console.log(str.test(\'a\')); //true
console.log(str.test(\'z\')); //true
console.log(str.test(\'ab\')); //false,因为以ab开头,ab结尾
console.log(str.test(\'A\')); //false,因为是大写
26个英文小写大写字母中的任意一个。精准匹配
let str=/^[a-zA-Z]$/
console.log(str.test(\'a\')); //true
console.log(str.test(\'z\')); //true
console.log(str.test(\'ab\')); //false,因为以ab开头,ab结尾
26个英文小写大写或者0-9或者-或者+任意一个。
let str=/^[a-zA-Z0-9-+]$/
console.log(str.test(\'a\')); //true
console.log(str.test(\'z\')); //true
console.log(str.test(\'-\')); //true
console.log(str.test(\'+\')); //true
console.log(str.test(\'+-\')); //false
// 如果中括号里面有^,表示取反的意思。千万别和我们的边界符^混淆了
let str=/^[^a-zA-Z0-9]$/ //除了26个英文字母,除了0-9都是可以的 
console.log(str.test(\'A\')); //false
console.log(str.test(\'z\')); //false
console.log(str.test(\'0\')); //false
console.log(str.test(\'了0\')) //false
console.log(str.test(\'了\')) //true

(使用前瞻)/bb(?=aa)/, aa前面是bb,不包含bb

let str1=\'javascript,typescript\';
// 字符串str1中,script前面是否有java,符合规则返回ture
console.log( /java(?=script)/.test(str1)); //true

let str2=\'java script,typescript\';
// 字符串str1中,script 前面是否有java
console.log( /java(?=script)/.test(str2)); //false
// 因为script 前面是否是空格java

let str3=\'javaxxscript,typescript\';
// 字符串str1中,script 前面是否有java
console.log( /java(?=script)/.test(str3)); //false
// 因为script 前面是否是javaxx,不是java

使用后顾 /(?<a1)b2/==>匹配a1后面的是否有b2,匹配结果不包含b2

// 匹配a1后面的是否有b2
let str1=\'a1b2\'
console.log(/(?<=a1)b2/.test(str1)) //true

// 匹配a1后面的是否有b2
let str1=\'a1b211\'
console.log(/(?<=a1)b2/.test(str1)) //true

// 匹配a1后面的是否有b2
let str1=\'a1a1b2b2\'
console.log(/(?<=a1)b2/.test(str1)) //true
有的小伙伴会说这个a1a1b2b2,不符合规则.
因为:a1a1b2b2 第一个a1后面仍然是a1,应该返回的是false
怎么会返回true.因为匹配的是的时候是每两个字符去匹配.
a1,1a,a1这个时候后面就是b2了,

尾声

如果你觉得我写的不错的话,可以给我推荐、打赏、评论!
上一个给我打赏的小伙伴都已经找到女朋友了!
咦!你不信,不信你给我打赏看一下!
保准你追到到喜欢的Ta!
你不会追,哎!难受。

我教你,你可以这样说:
小生不才,斗胆-问,不知姑娘是否心系他人。
感情之事,在下不敢儿戏!
如若姑娘早已心系他人。那在下便不再打扰。
如若有所唐突还望姑娘多加体谅!
若姑娘非我良人,那在下就不庸人自恼。
在下怕越陷越深,还望姑娘尽早告知!话已至此,我便先在此谢过!
拿去不谢!回头告诉我结果啊!
咦!抓住一个没有打赏的小伙伴!

我们公司正在寻找前端和后端,感兴趣的小哥哥或者小姐姐可以私聊我

如果你是大佬,请带我们飞

如果你是菜鸟,我们带你飞

作者:明月人倚楼
出处:https://www.cnblogs.com/IwishIcould/

想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!

万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!

想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

支付宝
微信
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。

我们公司正在寻找前端和后端,感兴趣的小哥哥或者小姐姐可以私聊我

如果你是大佬,请带我们飞

如果你是菜鸟,我们带你飞

以上是关于js-正则表达式边界符和前瞻后顾的使用-保证你看明白的主要内容,如果未能解决你的问题,请参考以下文章

JS 正则表达式否定匹配(正向前瞻)

正则表达式之前瞻后顾(look around)

前端小知识点:正则前瞻

前端小知识点:正则前瞻

JavaScript正则表达式二

正则表达式前瞻(?=)后顾(?<)负前缀(?!)负后顾(?<!)