正则表达式避免分隔字符串中的数据重复?

标签 regex regex-lookarounds regex-greedy

我正在尝试验证将是 string 的数据值与 ,定界。我想要的是验证在 sting 中不应该重复相同的值.

前任。我的值(value)是。

    data1 = "value1,value2,value3,va-lu4,value 6,value1";//should fail
    data2 = "value1,value2,value3,va-lu4,value 6";//should pass

在上述场景中 data1应该失败,因为它包含 value1两次。而在 data2应该通过或匹配,因为它不包含任何重复的值。

这是我匹配每个值但不确定如何检查重复的结果。
    ^[-\w\s]+(?:,[-\w\s]*)*$

这将匹配分隔符之间的值,但不确定如何检查是否存在重复值。任何帮助都会很棒。
备注 - 我知道我可以使用 sting 函数和循环来做到这一点 我正在学习 Regex并想尝试是否可以使用正则表达式。如果有混淆,请随时发表评论,因为这是我关于堆栈的第一个问题。

最佳答案

^(?!(?:^|.*,)([^,\n]*),.*\1(?:,|$)).*$

试试这个。看演示。

https://regex101.com/r/wU7sQ0/24

关于正则表达式避免分隔字符串中的数据重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28758834/

相关文章:

regex - 正则表达式用于匹配特定单词并忽略换行

php - 可选的非捕获组正则表达式

c# - 如果在模式中间遇到字符串,则正则表达式不匹配

php - preg_match 转储空数组

javascript - 正则表达式匹配特定字符串开头结尾的任意字符

java - 为什么 lookingAt 为 lookArounds 返回 true 而 matches 返回 false

c# - 什么正则表达式将匹配限制为 6 个小数位的小数值?

带有 `\R` 的 Java-8 正则表达式否定回顾

regex - 正则表达式用于匹配大写字母和破折号,后跟逗号

php - 使一个或零个正则表达式运算符贪婪