Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript正则表达式确保字符串中的唯一部分_Javascript_Regex - Fatal编程技术网

使用JavaScript正则表达式确保字符串中的唯一部分

使用JavaScript正则表达式确保字符串中的唯一部分,javascript,regex,Javascript,Regex,我有一个如下形式的字符串:AB-CD-EF-GH。这里,AB、CD、EF、GH分别构成字符串的一部分。在我们上面的例子中,有4个部分。现在,我正在尝试设计一个正则表达式模式,以确保字符串的所有部分都是唯一的。我成功地捕获了字符串中的字符,甚至创建了捕获组,但在模式本身中很难匹配捕获组中的数据。 有谁能建议我如何处理这个问题吗? 即使是一个简单的模式也会有很大的帮助。^.+?-\1.+?-?!\1|\2.+?-?!\1 |\2 |\3.+$ 这有点冗长,当您添加更多字符串以确保唯一性时,这个正则表

我有一个如下形式的字符串:AB-CD-EF-GH。这里,AB、CD、EF、GH分别构成字符串的一部分。在我们上面的例子中,有4个部分。现在,我正在尝试设计一个正则表达式模式,以确保字符串的所有部分都是唯一的。我成功地捕获了字符串中的字符,甚至创建了捕获组,但在模式本身中很难匹配捕获组中的数据。 有谁能建议我如何处理这个问题吗? 即使是一个简单的模式也会有很大的帮助。

^.+?-\1.+?-?!\1|\2.+?-?!\1 |\2 |\3.+$

这有点冗长,当您添加更多字符串以确保唯一性时,这个正则表达式将以指数形式增长。然而,对于您的示例,这个正则表达式可以实现这个技巧。它使用负lookahead来确保新匹配项都不等于旧匹配项


测试是否有任何部分重复更容易:\w\w.+\1-

console.log/\w\w.+\1/.test'AB-CD-EF-GH'//false
console.log/\w\w.+\1/.test'AB-CD-EF-CD'//true另一种方法是在连字符上使用,以检查拆分部分的数量是否与集合的唯一值的大小相同

让isUnique=s=>{ 设splitted=s.split-.filterBoolean; 返回splitted.length==4?新setsplited.size==splitted.length:false; }; [ AB-CD-EF-GH, AB-CD-EF-AB, AB-AB-AB-AB, AB-CD-EF-, AB-CD, AB-AB, AB, ].forEachs=>console.logs+->+isUniques;