我要驗證其可以含有1編號,以7的字符串,並且使其最大長度爲7如何驗證字符的重複字符串中的
([1-7]){0,7}
條件:否數量應在重複串。
如:
12345 true;
11345 false (1 is repeated) ;
98014 false (0,8,9 are invalid);
我要驗證其可以含有1編號,以7的字符串,並且使其最大長度爲7如何驗證字符的重複字符串中的
([1-7]){0,7}
條件:否數量應在重複串。
如:
12345 true;
11345 false (1 is repeated) ;
98014 false (0,8,9 are invalid);
這可以在一個單一的正則表達式來完成:
^(?!.*(.).*\1)[1-7]{0,7}$
先行斷言檢查,該字符串中的所有字符都是獨一無二的,實際的正則表達式只允許0-7數字1和7
之間在Java:
boolean foundMatch = subjectString.matches("^(?!.*(.).*\\1)[1-7]{0,7}$");
當然你也可以做先行未能通過[1-7]
替換每個.
快,但對於clarit爲了我的緣故,我選擇了不要。 (如果使用.matches()
方法,那麼您可以刪除^
和$
錨點,因爲它們在這種情況下是隱含的)。
我想你可以使用兩個表達式。一個驗證的長度和數字:
/^[1-7]{0,7}$/
,一個用於測試一個數字是否重複
/(\d).*\1/
\1
是第一個捕獲組的值的引用。
通過兩者的結合,您可以驗證字符串。例如在JavaScript:
< /^[1-7]{0,7}$/.test(12345) && !/(\d).*\1/.test(12345)
> true
--
< /^[1-7]{0,7}$/.test(11345) && !/(\d).*\1/.test(11345)
> false
你可以扭轉檢查,即如果它匹配[^1-7]|.{8}|(.).*\1
那麼它是無效的。
重複或獨特? –
換句話說:12341是否有效? –
獨特... 12341無效 –