温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JS正则表达式详解与同时写表示什么意思

发布时间:2021-10-13 09:41:47 来源:亿速云 阅读:158 作者:柒染 栏目:开发技术

JS正则表达式详解与同时写表示什么意思,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

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

  关于^与$什么意思

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

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

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

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

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

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

  '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正则表达式详解与同时写表示什么意思的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js
AI