2015-02-23 2 views
0

Я пытаюсь проверить наличие дубликатов в строке чисел, разделенных запятые:Javascript регулярного выражения для запятой числа дублирует

var rgx = /* the regex here? */ 
var str = "1,2,3,4,4,5"; 
var valid = rgx.test(str); 

, если он обнаружит, что есть дубликаты, как и в этом случае есть дубликат , Мне нужно вернуть значение false.

Любая помощь по этому вопросу?

ответ

1

Вы можете попробовать ниже регулярное выражение,

/\b(\d+)\b.*?,\1\b/.test(str); 

Он возвращает истину, если строка содержит дубликат номера.

Пример:

> var str = "1,2,3,4,4,5"; 
undefined 
> /\b(\d+)\b.*?,\1\b/.test(str); 
true 
> var str = "1,2,3,4,5"; 
undefined 
> /\b(\d+)\b.*?,\1\b/.test(str); 
false 

Если вы хотите, чтобы вернуть ложь для строки, которая содержит дубликат числа затем поместить все регулярное выражение внутри отрицательного предпросмотра.

> var str = "1,2,3,4,4,5"; 
undefined 
> /^(?!.*?\b(\d+)\b.*?,\1\b)/.test(str); 
false 
> var str = "1,2,3,4,5"; 
undefined 
> /^(?!.*?\b(\d+)\b.*?,\1\b)/.test(str); 
true 
+0

Я попробовал регулярное выражение для этого «1,2,2,3» и он вернулся действительным – swaggyP

+0

@swaggyP да, то первая часть моего регулярного выражения будет возвращена истина, если вход содержит все повторяющиеся числа, а второй часть моего ответа вернет false, если строка содержит любое дублирующее число. –

+0

Хорошо, это имеет смысл: также как бы я проверил, содержит ли строка только числа, разделенные запятыми – swaggyP

Смежные вопросы