JS正则表达式详解与同时写表示什么意思
创始人
2024-12-16 03:21:37
0次

  对于初学正则的同学来说,^$这两个看似简单的字符却在使用中总让匹配结果超出我们的预期,^什么时候表示行首什么时候表示反义?^$两个一起写表示什么含义?今天我们就来详细聊聊这两个字符。

  关于^与$什么意思

  先解释^与$概念,很简单的两句话,先留个印象。

  ^脱字符:匹配开头,若存在多行匹配多行的行头。

  $美元符:匹配尾部,若存在多行匹配多行的尾部。

  我们知道正则是一种匹配模式,要么匹配字符,要么匹配位置。这里我们得从这两种匹配情况分别解释这两个字符。

  从匹配字符角度看什么意思

  当用于匹配字符时,^与$更多是作为匹配出精准结果的辅助条件,我们先看个简单的例子:

  '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"

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...