求补充一个正则!

Nihility/ 2020-12-03 04:26:17

var val = "CREATE TABLE `inversion_recharge` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`orderno` char(15) NOT NULL DEFAULT '' COMMENT '单号',
`itemcount` tinyint(4) NOT NULL DEFAULT '0' COMMENT '充值人数',
`itemmoney` int(11) NOT NULL DEFAULT '0' COMMENT '合计金额',
`type` char(1) NOT NULL DEFAULT '' COMMENT '充值类型:1预充 2实充',
`isall` char(1) NOT NULL DEFAULT '' COMMENT '是否全额:1非全额 2全额',
`remark` varchar(200) NOT NULL DEFAULT '' COMMENT '备注',
`reviewdate` char(8) NOT NULL DEFAULT '' COMMENT '审核日期',
`reviewtime` char(6) NOT NULL DEFAULT '' COMMENT '审核时间',
`status` char(1) NOT NULL DEFAULT '' COMMENT '回款状态:1未回款 2已回款 3部分回款',
`reviewstatus` char(1) NOT NULL DEFAULT '1' COMMENT '审批状态:1待审核 2已通过 3已拒绝 4已撤回',
`datastatus` char(1) NOT NULL DEFAULT '1' COMMENT '数据状态 0/1 禁用 启用',
`createuser` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人',
`createdate` char(8) NOT NULL DEFAULT '' COMMENT '创建日期',
`createtime` char(6) NOT NULL DEFAULT '' COMMENT '创建时间',
`updateuser` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人',
`updatedate` char(8) NOT NULL DEFAULT '' COMMENT '更新日期',
`updatetime` char(6) NOT NULL DEFAULT '' COMMENT '更新时间',
`syscreatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
`sysupdatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代充值'";


var res = val.match(/\`[\w_]+\`\s+[\w_\(\)]+(\s+|\,)/g);




目前结果是这样:


希望数组每个元素后面都跟上COMMENT后的内容!
比如第二个元素,希望是这样:
`orderno` char(15) //单号
注意空格 注意空格 注意空格
...全文
2956 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nihility/ 2020-12-07
  • 打赏
  • 举报
回复
引用 11 楼 天际的海浪 的回复:
[quote=引用 10 楼 Nihility/ 的回复:][quote=引用 6 楼 天际的海浪 的回复:]

var val = `CREATE TABLE \`inversion_recharge\` (
  \`ID\` bigint(20) NOT NULL AUTO_INCREMENT,
  \`orderno\` char(15) NOT NULL DEFAULT '' COMMENT '单号',
  \`itemcount\` tinyint(4) NOT NULL DEFAULT '0' COMMENT '充值人数',
  \`itemmoney\` int(11) NOT NULL DEFAULT '0' COMMENT '合计金额',
  \`type\` char(1) NOT NULL DEFAULT '' COMMENT '充值类型:1预充 2实充',
  \`isall\` char(1) NOT NULL DEFAULT '' COMMENT '是否全额:1非全额 2全额',
  \`remark\` varchar(200) NOT NULL DEFAULT '' COMMENT '备注',
  \`reviewdate\` char(8) NOT NULL DEFAULT '' COMMENT '审核日期',
  \`reviewtime\` char(6) NOT NULL DEFAULT '' COMMENT '审核时间',
  \`status\` char(1) NOT NULL DEFAULT '' COMMENT '回款状态:1未回款 2已回款 3部分回款',
  \`reviewstatus\` char(1) NOT NULL DEFAULT '1' COMMENT '审批状态:1待审核 2已通过 3已拒绝 4已撤回',
  \`datastatus\` char(1) NOT NULL DEFAULT '1' COMMENT '数据状态 0/1 禁用 启用',
  \`createuser\` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人',
  \`createdate\` char(8) NOT NULL DEFAULT '' COMMENT '创建日期',
  \`createtime\` char(6) NOT NULL DEFAULT '' COMMENT '创建时间',
  \`updateuser\` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人',
  \`updatedate\` char(8) NOT NULL DEFAULT '' COMMENT '更新日期',
  \`updatetime\` char(6) NOT NULL DEFAULT '' COMMENT '更新时间',
  \`syscreatetime\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  \`sysupdatetime\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新时间',
  PRIMARY KEY (\`ID\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代充值'`;

var res = [];
val.replace(/(\`\w+\`)\s+([\w\(\)]+)(?:\s+.+?COMMENT\s+'(.+?)')?/g,function ($0,$1,$2,$3) {
	res.push($1+" "+$2+ ($3?" //"+$3:""));
	return $0;
});
console.log(res);

CREATE TABLE `refund` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `schoolid` bigint(20) NOT NULL DEFAULT '0' COMMENT '学校id',
  `orderno` char(15) NOT NULL DEFAULT '' COMMENT '单号',
  `itemcount` tinyint(4) NOT NULL DEFAULT '0' COMMENT '充值人数',
  `itemmoney` int(11) NOT NULL DEFAULT '0' COMMENT '合计金额',
  `reason` varchar(200) NOT NULL DEFAULT '' COMMENT '退款原因',
  `reviewdate` char(8) NOT NULL DEFAULT '' COMMENT '审批日期',
  `reviewtime` char(6) NOT NULL DEFAULT '' COMMENT '审批时间',
  `reviewstatus` char(1) NOT NULL DEFAULT '1' COMMENT '审批状态:1待审核 2已通过 3已拒绝 4已撤回',
  `status` char(1) NOT NULL DEFAULT '' COMMENT '退款状态:1退款成功 2退款失败',
  `datastatus` char(1) NOT NULL DEFAULT '1' COMMENT '数据状态 0/1 禁用 启用',
  `createuser` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人',
  `createdate` char(8) NOT NULL DEFAULT '' COMMENT '创建日期',
  `createtime` char(6) NOT NULL DEFAULT '' COMMENT '创建时间',
  `updateuser` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人',
  `updatedate` char(8) NOT NULL DEFAULT '' COMMENT '更新日期',
  `updatetime` char(6) NOT NULL DEFAULT '' COMMENT '更新时间',
  `syscreatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  `sysupdatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新时间',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='退款'
你好 这个就匹配不到了!我待会儿另外开帖给分![/quote]

var res = [];
val.replace(/(\`\w+\`)\s+([\w\(\)]+)(?:\s+[^\`]+?COMMENT\s+'(.+?)')?/g,function ($0,$1,$2,$3) {
    res.push($1+" "+$2+ ($3?" //"+$3:""));
    return $0;
});
[/quote] 已另外开贴加分,请查收https://bbs.csdn.net/topics/398476726
Nihility/ 2020-12-07
  • 打赏
  • 举报
回复
引用 12 楼 scscms太阳光 的回复:
    var res = [];
    val.replace(/(`\w+`)\s+([\w()]+).+?COMMENT\s+'([^']+)'/g, function (s, a, b, c) {
        res.push(a + ' ' + b + ' //' + c);
    });
ID列没有匹配上!
Nihility/ 2020-12-04
  • 打赏
  • 举报
回复
引用 6 楼 天际的海浪 的回复:

var val = `CREATE TABLE \`inversion_recharge\` (
  \`ID\` bigint(20) NOT NULL AUTO_INCREMENT,
  \`orderno\` char(15) NOT NULL DEFAULT '' COMMENT '单号',
  \`itemcount\` tinyint(4) NOT NULL DEFAULT '0' COMMENT '充值人数',
  \`itemmoney\` int(11) NOT NULL DEFAULT '0' COMMENT '合计金额',
  \`type\` char(1) NOT NULL DEFAULT '' COMMENT '充值类型:1预充 2实充',
  \`isall\` char(1) NOT NULL DEFAULT '' COMMENT '是否全额:1非全额 2全额',
  \`remark\` varchar(200) NOT NULL DEFAULT '' COMMENT '备注',
  \`reviewdate\` char(8) NOT NULL DEFAULT '' COMMENT '审核日期',
  \`reviewtime\` char(6) NOT NULL DEFAULT '' COMMENT '审核时间',
  \`status\` char(1) NOT NULL DEFAULT '' COMMENT '回款状态:1未回款 2已回款 3部分回款',
  \`reviewstatus\` char(1) NOT NULL DEFAULT '1' COMMENT '审批状态:1待审核 2已通过 3已拒绝 4已撤回',
  \`datastatus\` char(1) NOT NULL DEFAULT '1' COMMENT '数据状态 0/1 禁用 启用',
  \`createuser\` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人',
  \`createdate\` char(8) NOT NULL DEFAULT '' COMMENT '创建日期',
  \`createtime\` char(6) NOT NULL DEFAULT '' COMMENT '创建时间',
  \`updateuser\` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人',
  \`updatedate\` char(8) NOT NULL DEFAULT '' COMMENT '更新日期',
  \`updatetime\` char(6) NOT NULL DEFAULT '' COMMENT '更新时间',
  \`syscreatetime\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  \`sysupdatetime\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新时间',
  PRIMARY KEY (\`ID\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代充值'`;

var res = [];
val.replace(/(\`\w+\`)\s+([\w\(\)]+)(?:\s+.+?COMMENT\s+'(.+?)')?/g,function ($0,$1,$2,$3) {
	res.push($1+" "+$2+ ($3?" //"+$3:""));
	return $0;
});
console.log(res);

CREATE TABLE `refund` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `schoolid` bigint(20) NOT NULL DEFAULT '0' COMMENT '学校id',
  `orderno` char(15) NOT NULL DEFAULT '' COMMENT '单号',
  `itemcount` tinyint(4) NOT NULL DEFAULT '0' COMMENT '充值人数',
  `itemmoney` int(11) NOT NULL DEFAULT '0' COMMENT '合计金额',
  `reason` varchar(200) NOT NULL DEFAULT '' COMMENT '退款原因',
  `reviewdate` char(8) NOT NULL DEFAULT '' COMMENT '审批日期',
  `reviewtime` char(6) NOT NULL DEFAULT '' COMMENT '审批时间',
  `reviewstatus` char(1) NOT NULL DEFAULT '1' COMMENT '审批状态:1待审核 2已通过 3已拒绝 4已撤回',
  `status` char(1) NOT NULL DEFAULT '' COMMENT '退款状态:1退款成功 2退款失败',
  `datastatus` char(1) NOT NULL DEFAULT '1' COMMENT '数据状态 0/1 禁用 启用',
  `createuser` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人',
  `createdate` char(8) NOT NULL DEFAULT '' COMMENT '创建日期',
  `createtime` char(6) NOT NULL DEFAULT '' COMMENT '创建时间',
  `updateuser` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人',
  `updatedate` char(8) NOT NULL DEFAULT '' COMMENT '更新日期',
  `updatetime` char(6) NOT NULL DEFAULT '' COMMENT '更新时间',
  `syscreatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  `sysupdatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新时间',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='退款'
你好 这个就匹配不到了!我待会儿另外开帖给分!
锟斤拷锟斤拷 2020-12-04
  • 打赏
  • 举报
回复
引用 3 楼 Nihility/ 的回复:
[quote=引用 1 楼 cjhelloworld 的回复:]\'[\u4e00-\u9fa50-9\s\:]+\' 这个可以匹配到comment之后的内容
也没匹配到~[/quote] var res = val.match(/\'[\u4e00-\u9fa50-9\s\:]{2,100}\'/g);我用这个可以匹配到啊(我把+换成{2,100}了,要不'0'也能匹配出来)
瓶0盖 2020-12-04
  • 打赏
  • 举报
回复
看不懂(#-.-)
scscms太阳光 2020-12-04
  • 打赏
  • 举报
回复
    var res = [];
val.replace(/(`\w+`)\s+([\w()]+).+?COMMENT\s+'([^']+)'/g, function (s, a, b, c) {
res.push(a + ' ' + b + ' //' + c);
});
天际的海浪 2020-12-04
  • 打赏
  • 举报
回复
引用 10 楼 Nihility/ 的回复:
[quote=引用 6 楼 天际的海浪 的回复:]

var val = `CREATE TABLE \`inversion_recharge\` (
  \`ID\` bigint(20) NOT NULL AUTO_INCREMENT,
  \`orderno\` char(15) NOT NULL DEFAULT '' COMMENT '单号',
  \`itemcount\` tinyint(4) NOT NULL DEFAULT '0' COMMENT '充值人数',
  \`itemmoney\` int(11) NOT NULL DEFAULT '0' COMMENT '合计金额',
  \`type\` char(1) NOT NULL DEFAULT '' COMMENT '充值类型:1预充 2实充',
  \`isall\` char(1) NOT NULL DEFAULT '' COMMENT '是否全额:1非全额 2全额',
  \`remark\` varchar(200) NOT NULL DEFAULT '' COMMENT '备注',
  \`reviewdate\` char(8) NOT NULL DEFAULT '' COMMENT '审核日期',
  \`reviewtime\` char(6) NOT NULL DEFAULT '' COMMENT '审核时间',
  \`status\` char(1) NOT NULL DEFAULT '' COMMENT '回款状态:1未回款 2已回款 3部分回款',
  \`reviewstatus\` char(1) NOT NULL DEFAULT '1' COMMENT '审批状态:1待审核 2已通过 3已拒绝 4已撤回',
  \`datastatus\` char(1) NOT NULL DEFAULT '1' COMMENT '数据状态 0/1 禁用 启用',
  \`createuser\` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人',
  \`createdate\` char(8) NOT NULL DEFAULT '' COMMENT '创建日期',
  \`createtime\` char(6) NOT NULL DEFAULT '' COMMENT '创建时间',
  \`updateuser\` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人',
  \`updatedate\` char(8) NOT NULL DEFAULT '' COMMENT '更新日期',
  \`updatetime\` char(6) NOT NULL DEFAULT '' COMMENT '更新时间',
  \`syscreatetime\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  \`sysupdatetime\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新时间',
  PRIMARY KEY (\`ID\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代充值'`;

var res = [];
val.replace(/(\`\w+\`)\s+([\w\(\)]+)(?:\s+.+?COMMENT\s+'(.+?)')?/g,function ($0,$1,$2,$3) {
	res.push($1+" "+$2+ ($3?" //"+$3:""));
	return $0;
});
console.log(res);

CREATE TABLE `refund` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `schoolid` bigint(20) NOT NULL DEFAULT '0' COMMENT '学校id',
  `orderno` char(15) NOT NULL DEFAULT '' COMMENT '单号',
  `itemcount` tinyint(4) NOT NULL DEFAULT '0' COMMENT '充值人数',
  `itemmoney` int(11) NOT NULL DEFAULT '0' COMMENT '合计金额',
  `reason` varchar(200) NOT NULL DEFAULT '' COMMENT '退款原因',
  `reviewdate` char(8) NOT NULL DEFAULT '' COMMENT '审批日期',
  `reviewtime` char(6) NOT NULL DEFAULT '' COMMENT '审批时间',
  `reviewstatus` char(1) NOT NULL DEFAULT '1' COMMENT '审批状态:1待审核 2已通过 3已拒绝 4已撤回',
  `status` char(1) NOT NULL DEFAULT '' COMMENT '退款状态:1退款成功 2退款失败',
  `datastatus` char(1) NOT NULL DEFAULT '1' COMMENT '数据状态 0/1 禁用 启用',
  `createuser` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人',
  `createdate` char(8) NOT NULL DEFAULT '' COMMENT '创建日期',
  `createtime` char(6) NOT NULL DEFAULT '' COMMENT '创建时间',
  `updateuser` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人',
  `updatedate` char(8) NOT NULL DEFAULT '' COMMENT '更新日期',
  `updatetime` char(6) NOT NULL DEFAULT '' COMMENT '更新时间',
  `syscreatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  `sysupdatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新时间',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='退款'
你好 这个就匹配不到了!我待会儿另外开帖给分![/quote]

var res = [];
val.replace(/(\`\w+\`)\s+([\w\(\)]+)(?:\s+[^\`]+?COMMENT\s+'(.+?)')?/g,function ($0,$1,$2,$3) {
    res.push($1+" "+$2+ ($3?" //"+$3:""));
    return $0;
});
天际的海浪 2020-12-03
  • 打赏
  • 举报
回复

var val = `CREATE TABLE \`inversion_recharge\` (
  \`ID\` bigint(20) NOT NULL AUTO_INCREMENT,
  \`orderno\` char(15) NOT NULL DEFAULT '' COMMENT '单号',
  \`itemcount\` tinyint(4) NOT NULL DEFAULT '0' COMMENT '充值人数',
  \`itemmoney\` int(11) NOT NULL DEFAULT '0' COMMENT '合计金额',
  \`type\` char(1) NOT NULL DEFAULT '' COMMENT '充值类型:1预充 2实充',
  \`isall\` char(1) NOT NULL DEFAULT '' COMMENT '是否全额:1非全额 2全额',
  \`remark\` varchar(200) NOT NULL DEFAULT '' COMMENT '备注',
  \`reviewdate\` char(8) NOT NULL DEFAULT '' COMMENT '审核日期',
  \`reviewtime\` char(6) NOT NULL DEFAULT '' COMMENT '审核时间',
  \`status\` char(1) NOT NULL DEFAULT '' COMMENT '回款状态:1未回款 2已回款 3部分回款',
  \`reviewstatus\` char(1) NOT NULL DEFAULT '1' COMMENT '审批状态:1待审核 2已通过 3已拒绝 4已撤回',
  \`datastatus\` char(1) NOT NULL DEFAULT '1' COMMENT '数据状态 0/1 禁用 启用',
  \`createuser\` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人',
  \`createdate\` char(8) NOT NULL DEFAULT '' COMMENT '创建日期',
  \`createtime\` char(6) NOT NULL DEFAULT '' COMMENT '创建时间',
  \`updateuser\` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人',
  \`updatedate\` char(8) NOT NULL DEFAULT '' COMMENT '更新日期',
  \`updatetime\` char(6) NOT NULL DEFAULT '' COMMENT '更新时间',
  \`syscreatetime\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
  \`sysupdatetime\` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新时间',
  PRIMARY KEY (\`ID\`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代充值'`;

var res = [];
val.replace(/(\`\w+\`)\s+([\w\(\)]+)(?:\s+.+?COMMENT\s+'(.+?)')?/g,function ($0,$1,$2,$3) {
	res.push($1+" "+$2+ ($3?" //"+$3:""));
	return $0;
});
console.log(res);
Nihility/ 2020-12-03
  • 打赏
  • 举报
回复
顶一下!顶一下!
泡泡鱼_ 2020-12-03
  • 打赏
  • 举报
回复
要得到的是:`orderno` char(15) //单号 没空格,没单引号? 那你需要先行replace以后再match。 正则一直是弱项,写不出高质量的,但能“堆”出来
Nihility/ 2020-12-03
  • 打赏
  • 举报
回复
引用 1 楼 cjhelloworld 的回复:
\'[\u4e00-\u9fa50-9\s\:]+\' 这个可以匹配到comment之后的内容
也没匹配到~
Nihility/ 2020-12-03
  • 打赏
  • 举报
回复
引用 1 楼 cjhelloworld 的回复:
\'[\u4e00-\u9fa50-9\s\:]+\' 这个可以匹配到comment之后的内容
COMMENT后和行尾的,前的
锟斤拷锟斤拷 2020-12-03
  • 打赏
  • 举报
回复
\'[\u4e00-\u9fa50-9\s\:]+\' 这个可以匹配到comment之后的内容

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧