我需要一个逗号分隔字符串的正则表达式。Javascript正则表达式匹配逗号分隔的重复字符串
例如: “测试1,Test2的,Test3的,Test1的”
基本上是:
rgx.test("Test1, Test2, Test3, Test1")
应该返回false,因为有一个重复。
任何帮助?
我需要一个逗号分隔字符串的正则表达式。Javascript正则表达式匹配逗号分隔的重复字符串
例如: “测试1,Test2的,Test3的,Test1的”
基本上是:
rgx.test("Test1, Test2, Test3, Test1")
应该返回false,因为有一个重复。
任何帮助?
String s = "test1, test2,test1, ....";
String parts[] = s.split(",");
然后所有的令牌是在parts[]
,你可以通过遍历正好,看看是否有2匹配。使用嵌套for循环。一个在每个运行,另一个提前与那些阵列中
我会做类似如下:
(?:^|,)([^,]+)(?=.*,\1(?:,|$))
请注意,我已经采取的自由从逗号分隔的列表中删除空格。它只是让事情变得更简单。
如果你不介意解决方案是一个功能,而不是RegEx
,这是一个工作正常的代码。
function isSetString(str, separator) {
//TODO input validation
var arr = str && str.split(separator || ","),
l = arr && arr.length,
o = {};
for (var i = 0; i < l; i++) {
if (o.hasOwnProperty(arr[i])) {
return false;
} else {
o[ arr[i] ] = true;
}
}
return true;
}
其工作..谢谢 – 2016-03-29 05:21:39
如果输入很大,CPU性能将不会最佳。您可以通过使用哈希表将性能从O(n^2)更改为O(n)。在JS中,你可以用普通的'objects'来实现这一点。 – Ricardo 2015-02-23 23:33:11
其实,@OrangePot,你的代码不是'JavaScript'! – Ricardo 2015-02-23 23:34:42
它不完全O(n^2)导致你只能在数组中看到前方。但是,是的,不是最有效的方式,但是如果输入很小,最简单的方法就是实施。 – OrangePot 2015-02-23 23:39:15