我有这个代码运作良好并返回我的字符串:“91308543 91502466 91502466 91503362 91503362 91308543 9851236”。
function f () {
var text = ("91308543 91502466 91502466 91503362 91503362 91308543 9851236");
var regex = /(9\d{7})/gm;
var compare = text.match(regex);
var result = compare.join(", ");
return result; }
f ();
我的问题是我想摆脱重复的数字。 我已经尝试在JS控制台中使用这个正则表达式:“/(9\d{7})(?!.*\1)/gm;”它工作,但不幸的是在我使用的引擎(Esko Automation Engine)根本不起作用。我收到此错误:
javax.script.ScriptException:TypeError:null在第9行没有这样的函数“join”。
是否有人知道解决方案或其他方式不返回字符串中的重复数字?
答案 0 :(得分:0)
这不是正则表达式,但js中的过滤函数可以很好地删除重复项。这实际上是我在StackOverflow上学到的一种模式。
f () {
var text = ("91308543 91308543 91502466 91503362 91503362");
var arr = text.split(' ');
var result = arr.filter( (first, current) = {return arr.indexOf(first) === current});
return result.join(' ');
}
f ();
我根本不熟悉您的环境,但如果join()是您唯一的问题,您可以尝试用concat()替换join()。
function f () {
var text = ("91308543 91502466 91502466 91503362 91503362 91308543 9851236");
var regex = /(9\d{7})/gm;
var compare = text.match(regex);
var result = ''.concat(...compare);
return result; }
f ();
这是使用... es6传播运算符和concat。 spread运算符几乎占用了数组中的所有变量并将它们显示为一个变量。它与''。。`'('91308543','91502466','91503362')
相同