我想使用正则表达式从打字稿字符串中删除一些数字和字符。我想我已经接近了,但是我想念一些东西。
这里是弦乐之王:
我想要的是:
产品名称
这里是我正在使用的正则表达式。
product_name = product_name.replace(/\[[0-9]+\]/,'');
答案 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);