我需要正則表達式來檢查String
是否至少有4個唯一字符。例如,如果一個字符串是"test"
那麼它會失敗,因爲它有三個不同的字符,但是如果一個字符串是"test1"
那麼它就會通過。需要正則表達式檢查字符串中至少有4個不同的字符
回答
我不知道如何用正則表達式做這件事,我也不期望這是解決問題的好方法。下面是與常規的JavaScript一個更通用的功能:
function countUniqueChars(testVal) {
var index = {};
var ch, cnt = 0;
for (var i = 0; i < testVal.length; i++) {
ch = testVal.charAt(i);
if (!(ch in index)) {
index[ch] = true;
++cnt;
}
}
return(cnt);
}
function hasFourUniqueChars(testVal) {
return(countUniqueChars(testVal) >= 4);
}
你可以看到它在這裏工作:http://jsfiddle.net/jfriend00/bqBRv/
這真的有用嗎? – 2012-03-19 06:14:37
@ChuckNorris「查牙諾里斯牙醫後」 – mowwwalker 2012-03-19 06:16:27
是的,它的工作原理。參見[jsFiddle](http://jsfiddle.net/jfriend00/bqBRv/)。 – jfriend00 2012-03-19 06:17:05
如果你是開放的使用額外的庫,undescore.js提供了一些實用的功能,可以使這是一個非常短和甜查詢:
function countUniqueCharacters(value) {
return _.uniq(value.split("")).length;
}
var str = "abcdef"
var counter = 0;
hash = new Object();
var i;
for(i=0; i< str.length; i++){
if(!hash[str.charAt(i)]){
counter +=1; hash[str.charAt(i)]=true
}
}
if(counter < 4){
console.log("error");
}
這不會忽略最後一個字符嗎? – 2012-03-19 06:25:52
字符串的最後一個符號有string.length - 1個位置 – gayavat 2012-03-19 06:34:14
但是,只有將字符串轉換爲2,注意「i
- 1. javascript正則表達式需要至少一個特殊字符
- 2. 正則表達式來檢查至少3個字符?
- 3. 正則表達式匹配至少4個字符
- 4. 什麼是正則表達式來檢測一個至少有6個字符,沒有空格的字符串?
- 5. 正則表達式來檢查字符的字符串
- 6. 需要此正則表達式不要求至少有1個大寫字母
- 7. 如何使用正則表達式來匹配任何字符串,但至少需要3個字符?
- 8. 正則表達式接受至少一個字母字符和數字字符
- 9. 在字符串中找到字/字符串,我需要正則表達式嗎?
- 10. 正則表達式替換從不需要的字符中清理字符串
- 11. 正則表達式接受不同模式的4個字符
- 12. 正則表達式查找字符串中的字符串中的字符串
- 13. 必須至少有數量和字符的正則表達式
- 14. n個字符或至少m個字符的正則表達式
- 15. 正則表達式的字母數字,但至少有一個字符
- 16. 正則表達式檢索字符串
- 17. 檢查多個正則表達式模式的字符串
- 18. 需要這個字符串的正則表達式
- 19. 我需要一個字符串的正則表達式
- 20. 正則表達式的字符串不包含兩個不同的字符串
- 21. 正則表達式在字符串中查找字符串
- 22. 正則表達式匹配所有特定的字符串或至少一個
- 23. 正則表達式檢測只涉及(至少一個)字母和特殊字符的字符串
- 24. 正則表達式查找至少有一個大寫字母的子字符串,只有字母
- 25. 正則表達式查找字符串
- 26. R - 字符表中每個字符串的正則表達式
- 27. 需要一個正則表達式匹配多行字符串
- 28. 正則表達式 - 組,需要[this:andthis] from一個字符串
- 29. 正則表達式匹配單詞至少一個字符
- 30. php正則表達式匹配至少3個字符?
做**不**使用 「正則表達式」 這一點。正則表達式**不能很好地處理這個問題。 (是的,這是*可能*,fsvo,但這是一場噩夢,並限於相對較小的上限長度。) – 2012-03-19 06:07:50
實際上,這並不經常。 – Matthias 2012-03-19 06:09:19