JS正则表达式详解与同时写表示什么意思,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联公司成立于2013年,是专业互联网技术服务公司,拥有项目网站设计制作、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元滨海新区做网站,已为上家服务,为滨海新区各地企业和个人服务,联系电话:18980820575对于初学正则的同学来说,^$这两个看似简单的字符却在使用中总让匹配结果超出我们的预期,^什么时候表示行首什么时候表示反义?^$两个一起写表示什么含义?今天我们就来详细聊聊这两个字符。
关于^与$什么意思
先解释^与$概念,很简单的两句话,先留个印象。
^脱字符:匹配开头,若存在多行匹配多行的行头。
$美元符:匹配尾部,若存在多行匹配多行的尾部。
我们知道正则是一种匹配模式,要么匹配字符,要么匹配位置。这里我们得从这两种匹配情况分别解释这两个字符。
从匹配字符角度看什么意思
当用于匹配字符时,^与$更多是作为匹配出精准结果的辅助条件,我们先看个简单的例子:
'123'.match(/\d/g);//[1,2,3]
很好理解,全局(注意结尾有个g)匹配单个任意数字,很明显1,2,3都符合条件,所以这里找到了三个匹配结果;我们分别添加^与$再看:
'123'.match(/^\d/g);//[1]
'123'.match(/\d$/g);//[3]
此时^\d只能匹配到1,而\d$只能匹配到3,你肯定就纳闷了,不对啊,我正则后面不是有个g表示全局匹配吗,怎么只匹配一个了呢?以^\d为例,此时的匹配条件其实是找开头位置后的一个任意数字,\d$表示匹配结尾前的一个任意数字。开头和结果对于一个不换行的字符串都只有一个,所以自然只能找到一个数字了,现在能理解前面所说的^$作为辅助条件的意思了吗。
那么我们现在将数字换行,再看:
'12\n34'.match(/^\d/mg);//[1,3]
'12\n34'.match(/\d$/mg);//[2,4]
由于存在换行,导致现在有两个开头位置和两个结尾位置(注意匹配中使用了m,表示换行匹配),所以匹配结果也变成了两个,不难理解吧。
2.从匹配位置角度
正则除了根据规则匹配对应的字符,还有一个强大的功能就是匹配位置。什么是位置呢?以字符1234为例,每个箭头都代表一个位置,其中第一个箭头的位置就是脱字符^,结果位置就是美元符$,如下图:
所以当我们在匹配位置时,^$也成为了我们需要匹配的结果,例如,我需要将1234首尾位置加上花朵:
'1234'.replace(/^|$/g,'?');//"?1234?"
当然,在匹配位置时^与$也是帮助我们精确位置的辅助条件,比如常用的千位分隔符正则:
'12345678'.replace(/(?!^)(?=(\d{3})+$)/g,',');//"12,345,678"
看完上述内容,你们掌握JS正则表达式详解与同时写表示什么意思的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!