javascript 正则 获取 引号内内容

发布于 2022-09-04 02:35:03 字数 291 浏览 14 评论 0

有字符串abc"xxx","yyy"def,用javascript正则如何获取xxx和yyy?
不能带有引号"

我自己写了一个:

const reg = /\"(.*?)\"/;
reg.exec (abc"xxx","yyy"def);//只能获取第一个xxx

如果去掉正则表达式中的?,则获取xxx","yyy

请问这个正则表达式该如何写?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

深者入戏 2022-09-11 02:35:03

因为js不支持先行断言(?<="),所以不好一次性获取成功。那就写个方法,解决问题。不会获取中间的逗号和两边的引号:

function getStr(str) {
    var result = str.match(/\"\w*\"/g);
    return result.map(function(element){
        return element.replace(/\"/g, '');
    });
}
getStr('abc"xxx","yyy"def');

//["xxx", "yyy"] 
↘人皮目录ツ 2022-09-11 02:35:03
var s = 'abc"xxx","yyy"def';
var reg = /\"(.*?)\"/;
var len = s.match(reg).length;
for(var i = 0;i<len;i++){
    var s=s.replace(s.match(reg)[0],'');
    console.log(RegExp.$1);
}

感觉这样可以哈。

ぺ禁宫浮华殁 2022-09-11 02:35:03
var str = `abc"xxx","yyy"def`;
var reg = /\"(.*?)\"/ig;
console.log(str.match(reg)); // 这个出来的结果带了两个引号,好吧

// 暴力的不带引号的
str.match( /\"(.*?)\"/ig).join('#$#').replace(/"/g,'').split('#$#');

// 再更新,上面那个太暴力了,万一有反引号等就是存在引号的情况就尴尬了,再来个简单点的
str.match( /\"(.*?)\"/ig).map(str => str.substr(1, str.length-2));

来个文档
https://developer.mozilla.org...使用插入语

正则表达式标志
g 全局搜索。
i 不区分大小写搜索。
m 多行搜索。
y 执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志。

z祗昰~ 2022-09-11 02:35:03

目前大多数的回答 获得的都是带引号的,而题主说的是不带引号啊

把所有的回答在console里运行了一遍,@MollyM 答案可行。

效果如下:
图片描述

别挽留 2022-09-11 02:35:03

把你写的加个g就行了,没有g的情况下每次搜索都会从头开始,有g的时候正则对象会记录lastIndex属性,从这里往后匹配。


clipboard.png
你自己写得就可以。

猫腻 2022-09-11 02:35:03

一楼的答案很棒,不过我有个小建议,就是别用两次正则,毕竟正则相对于原生函数还是比较耗资源的,

function getStr(str) {
    var result = str.match(/\"\w*\"/g);
    return result.map(function(element){
        return element.substring(1 , -1);
    });
}
getStr('abc"xxx","yyy"def');
夜无邪 2022-09-11 02:35:03

'abc"xxx","yyy"def'.match(/"w+"/gi).join('').split('"').join('')
这样就OK了,一行完事!

兔姬 2022-09-11 02:35:03

var aa='abc"xxx","yyy"def'
var bb=aa.replace(/([w ,])+?"(.?)"(w)/g,"$2,").match(/w{3}/g)

乱了心跳 2022-09-11 02:35:03

?表示懒惰匹配,去掉使用默认的贪婪匹配,你的问题在于是否全局搜索

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文