使用正确的js编写的正则表达式,但是无法匹配
2023-12-13 21:49:33
其实只是自己感觉表达式正确而已,其实是错误的。
先直接说答案,.语法无法匹配\n(点语法无法匹配\n)
,不知道大家有没有恍然大悟。
这里举例子介绍一下:
我现在有一个字符串,例如'12!@@!333!@@!'
,其中!@@!
是一个标记,我需要获取到夹在中间的内容,这个例子就是需要匹配到333
。
需要注意的是,这里只是为了演示,才使用正则表达式做这个事情的,如果可以不用正则表达式,最好还是不要用。它很消耗性能,尤其是在字符串长度不可控的时候。
例如这里想要匹配到333
,完全可以这样:
let a = '12!@@!333!@@!'
a?.split('!@@!')[1]?.split('!@@!')[0]
下面来用正则试一下
可能会这样写
a.replace(/.*!@@!(.*)!@@!/gi, (str, p1) => p1)
对于这个demo,确实可以,现在把目标字符串改一下,现在匹配'1\n2!@@!333!@@!'
这个,注意,这里有一个换行符。那么还会不会正确输出呢?输出的结果是:
1
333
注意1和333之间有一个换行符。这个问题就是在最开始提到的点语法无法匹配\n
,如果想要匹配,正则表达式需要改成这样:
a.replace(/.*!@@!(.*)!@@!/gis
模式中添加s(单行模式)模式,这样\n就会被.匹配到了。
文章来源:https://blog.csdn.net/weixin_45609589/article/details/134833310
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!