繁体   English   中英

仅使用正则表达式保留字母数字值

[英]only retain alphanumeric values using regex

我有一个文本,我需要删除预期结果必须如下所示的产品 ID。 如何使用 js 替换 function 删除它

我试过了

x.replace(/[a-z)-9]/g,"")

     var x = "Top Knobs, Regent's Park, Knobs and Pulls, TK3112AG, TK3112BSN, 
M1197, M1198, M1199, M1288, M1289, M1648, M1649, M1745, M1746, M1747, 
    M1748, M1749, M1750, M1751, M1752, M1753, M1754, M1755, M2700, M2701, 
    M2702, M2703, M2704, M2705, M2706, M2707, M2708, M2709, M2710, M2711, 
    M2712, M2713, M2714, M2715, M2716, M2717, M2718, M2719, M2720, M2721, 
    M2722, M2723, M2724, M2725, M2726, M2727, M2728, M2729, M2730, M2731, TK3112BLK, 
        TK3112HB, TK3112PN, TK3112PC, TK3115HB, TK3114PC, TK3116BLK, TK3115PN, 
        TK3117BLK, TK3114AG, TK3116PN, TK3118AG, TK3119BSN, TK3113BSN, TK3116PC, 
        TK3119BLK, TK3113PC, TK3115PC, TK3117PC, TK3117HB, TK3119AG, TK3119HB, 
        TK3117PN, TK3115AG, TK3119PC, TK3118BSN, TK3114PN, TK3118PC, TK3118PN, 
        TK3114HB, TK3115BLK, TK3118HB, TK3114BLK, TK3114BSN, TK3115BSN, TK3113AG, 
        TK3116BSN, TK3113BLK, TK3119PN, TK3116HB, TK3118BLK, TK3117BSN, TK3113PN, 
        TK3113HB, TK3116AG, TK3117AG, TK3112, TK3115, TK3114, TK3116, TK3117, 
        TK3118, TK3119, TK3113, Ash Gray, Brushed Satin Nickel, Flat Black, Honey 
        Bronze, Polished Nickel, Polished Chrome, Open End"

执行结果

Top Knobs, Regent's Park, Knobs and Pulls, Ash Gray, Brushed Satin Nickel, Flat Black, Honey 
Bronze, Polished Nickel, Polished Chrome, Open End

根据您的示例数据,您希望将任何带有数字的单词替换为空字符串,包括周围的空格和逗号。 你可以用这个正则表达式做到这一点:

(^|\s+)\S*\d\S*

它查找字符串的开头或一个或多个空格,然后是一些非空格字符、一个数字和一些非空格字符(如果有的话,这将匹配尾随逗号)。

 var x = "Top Knobs, Regent's Park, Knobs and Pulls, TK3112AG, TK3112BSN, M1197, M1198, M1199, M1288, M1289, M1648, M1649, M1745, M1746, M1747, M1748, M1749, M1750, M1751, M1752, M1753, M1754, M1755, M2700, M2701, M2702, M2703, M2704, M2705, M2706, M2707, M2708, M2709, M2710, M2711, M2712, M2713, M2714, M2715, M2716, M2717, M2718, M2719, M2720, M2721, M2722, M2723, M2724, M2725, M2726, M2727, M2728, M2729, M2730, M2731, TK3112BLK, TK3112HB, TK3112PN, TK3112PC, TK3115HB, TK3114PC, TK3116BLK, TK3115PN, TK3117BLK, TK3114AG, TK3116PN, TK3118AG, TK3119BSN, TK3113BSN, TK3116PC, TK3119BLK, TK3113PC, TK3115PC, TK3117PC, TK3117HB, TK3119AG, TK3119HB, TK3117PN, TK3115AG, TK3119PC, TK3118BSN, TK3114PN, TK3118PC, TK3118PN, TK3114HB, TK3115BLK, TK3118HB, TK3114BLK, TK3114BSN, TK3115BSN, TK3113AG, TK3116BSN, TK3113BLK, TK3119PN, TK3116HB, TK3118BLK, TK3117BSN, TK3113PN, TK3113HB, TK3116AG, TK3117AG, TK3112, TK3115, TK3114, TK3116, TK3117, TK3118, TK3119, TK3113, Ash Gray, Brushed Satin Nickel, Flat Black, Honey Bronze, Polished Nickel, Polished Chrome, Open End"; console.log(x.replace(/(^|\s+)\S*\d\S*/g, ''))

我们可以尝试使用以下正则表达式简单地剥离代码术语:

\s*[A-Z]+[0-9]+[A-Z]*,?\s*

解释:

\s*     remove any preceding whitespace
[A-Z]+  one or more uppercase characters
[0-9]+  one or more digits
[A-Z]*  optional uppercase
,?      optional comma
\s*     whitespace

 var x = "Top Knobs, Regent's Park, Knobs and Pulls, TK3112AG, TK3112BSN, M1197, M1198, M1199, M1288, M1289, M1648, M1649, M1745, M1746, M1747, M1748, M1749, M1750, M1751, M1752, M1753, M1754, M1755, M2700, M2701, M2702, M2703, M2704, M2705, M2706, M2707, M2708, M2709, M2710, M2711, M2712, M2713, M2714, M2715, M2716, M2717, M2718, M2719, M2720, M2721, M2722, M2723, M2724, M2725, M2726, M2727, M2728, M2729, M2730, M2731, TK3112BLK, TK3112HB, TK3112PN, TK3112PC, TK3115HB, TK3114PC, TK3116BLK, TK3115PN, TK3117BLK, TK3114AG, TK3116PN, TK3118AG, TK3119BSN, TK3113BSN, TK3116PC, TK3119BLK, TK3113PC, TK3115PC, TK3117PC, TK3117HB, TK3119AG, TK3119HB, TK3117PN, TK3115AG, TK3119PC, TK3118BSN, TK3114PN, TK3118PC, TK3118PN, TK3114HB, TK3115BLK, TK3118HB, TK3114BLK, TK3114BSN, TK3115BSN, TK3113AG, TK3116BSN, TK3113BLK, TK3119PN, TK3116HB, TK3118BLK, TK3117BSN, TK3113PN, TK3113HB, TK3116AG, TK3117AG, TK3112, TK3115, TK3114, TK3116, TK3117, TK3118, TK3119, TK3113, Ash Gray, Brushed Satin Nickel, Flat Black, Honey Bronze, Polished Nickel, Polished Chrome, Open End"; x = x.replace(/\s*[AZ]+[0-9]+[AZ]*,?\s*/g, ""); console.log(x);

您可能还会获得所有重复的产品 ID:

\b[A-Z]+\d+[A-Z]*(?:,\s*[A-Z]+\d+[A-Z]*)*,?\s*

模式匹配:

  • \b[AZ]+\d+[AZ]*一个单词边界,匹配 1+ 个大写字符、1+ 个数字和可选的大写字符
  • (?:非捕获组
    • ,\s*匹配,可选的空白字符
    • [AZ]+\d+[AZ]*匹配 1+ 个大写字符、1+ 个数字和可选的大写字符
  • )*关闭组并可选择重复
  • ,?\s*匹配可选的,和空白字符

正则表达式演示

 const regex = /\b[AZ]+\d+[AZ]*(?:,\s*[AZ]+\d+[AZ]*)*,?\s*/g; const x = `Top Knobs, Regent's Park, Knobs and Pulls, TK3112AG, TK3112BSN, M1197, M1198, M1199, M1288, M1289, M1648, M1649, M1745, M1746, M1747, M1748, M1749, M1750, M1751, M1752, M1753, M1754, M1755, M2700, M2701, M2702, M2703, M2704, M2705, M2706, M2707, M2708, M2709, M2710, M2711, M2712, M2713, M2714, M2715, M2716, M2717, M2718, M2719, M2720, M2721, M2722, M2723, M2724, M2725, M2726, M2727, M2728, M2729, M2730, M2731, TK3112BLK, TK3112HB, TK3112PN, TK3112PC, TK3115HB, TK3114PC, TK3116BLK, TK3115PN, TK3117BLK, TK3114AG, TK3116PN, TK3118AG, TK3119BSN, TK3113BSN, TK3116PC, TK3119BLK, TK3113PC, TK3115PC, TK3117PC, TK3117HB, TK3119AG, TK3119HB, TK3117PN, TK3115AG, TK3119PC, TK3118BSN, TK3114PN, TK3118PC, TK3118PN, TK3114HB, TK3115BLK, TK3118HB, TK3114BLK, TK3114BSN, TK3115BSN, TK3113AG, TK3116BSN, TK3113BLK, TK3119PN, TK3116HB, TK3118BLK, TK3117BSN, TK3113PN, TK3113HB, TK3116AG, TK3117AG, TK3112, TK3115, TK3114, TK3116, TK3117, TK3118, TK3119, TK3113, Ash Gray, Brushed Satin Nickel, Flat Black, Honey Bronze, Polished Nickel, Polished Chrome, Open End`; console.log(x.replace(regex));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM