正则表达式删除数字和其他字符

时间:2018-07-25 14:22:27

标签: javascript regex typescript

我想使用正则表达式从打字稿字符串中删除一些数字和字符。我想我已经接近了,但是我想念一些东西。

这里是弦乐之王:

  1. [15620584560]-产品名称(类型)
  2. [1256025]-产品名称(测试+1)
  3. [12560255544220]-产品名称

我想要的是:

产品名称

这里是我正在使用的正则表达式。

product_name = product_name.replace(/\[[0-9]+\]/,'');

2 个答案:

答案 0 :(得分:5)

您可以使用

.replace(/^\s*\[[0-9]+]\s*-\s*|\s*\([^()]*\)\s*$/g, '')

请参见regex demo

正则表达式匹配两个替代项(用|分隔):

  • ^\s*\[[0-9]+]\s*-\s*
    • ^-字符串的开头
    • \s*-超过0个空格
    • \[-一个[
    • [0-9]+-1个以上数字
    • ]-一个]字符
    • \s*-\s*-包含0+空格的-字符
  • |-或
  • \s\([^()]*\)\s*$
    • \s*-超过0个空格
    • \(-一个(
    • [^()]*-除()以外的0多个字符
    • \)-一个)
    • \s*-超过0个空格
    • $-字符串的结尾。

JS演示:

var strs = ['[15620584560] - product name (type)','[1256025] - product name (test+1)','[12560255544220] - product name'];
var reg = /^\s*\[[0-9]+]\s*-\s*|\s*\([^()]*\)\s*$/g;
for (var s of strs) {
  console.log(s, '=>', s.replace(reg, ''));
}

答案 1 :(得分:0)

一种可行的方法是在破折号上分割输入字符串,然后使用简单的正则表达式删除括号中的所有术语:

var input = '[15620584560] - product name (type)';
var fields = input.split(/\]\s*-/);
var result = fields[1].replace(/\s*\(.*?\)\s*/g, '').trim();
console.log(result);