2016-07-30 97 views
1

我有麻煩這個僞言轉換爲JavaScript我是新來的JavaScript和我感到困惑的labling串,我想確保我在正確的軌道日期驗證僞代碼的JavaScript

// Date validation function 
Function Boolean isValidDateFormat(String str) 
// Declare variables 
Declare String mm, dd, yyyy // month, day, year 
Declare Boolean result = True // valid date format 
// Check that length of string is 10 
If length(str) != 10 Then 
result = False 
End If 
// Check that third and sixth characters are slashes 
If substring(str,2,1) != "/" Or 
substring(str,5,1) != "/" Then 
result = False 
End If 
// Separate string into parts 
// Check that all entries are numeric 
mm = substring(str,0,2) // month 
dd = substring(str,3,2) // day 
yyyy = substring(str,6,4) // year 
If Not isNumeric(mm) Or Not isNumeric(dd) 
Or Not isNumeric(yyyy) Then 
result = False 
End If 
// Check that month is between 1 and 12 
// and day is between 1 and 31 
If (mm < 1 Or mm > 12) Or (dd < 1 Or dd > 31) Then 
result = False 
End If 
Return result 
End Function  

上這是我的JavaScript翻譯

function isValidDateFormat(String str){  
    return false;  
if (str.length <10) 
    return false; 
dd= substr[0];    
    mm= substr[3];  
    yyyy= substr[6]; 
if substr [2]!= "/"; 
    substr [5]!= "/"; 
return false; 

if (mm < 1 || mm > 12) 
    return false; 
else if (dd < 1 || dd> 31) 
    return false; 
+2

有幾個問題,包括語法,而是着眼於這一個第一:該函數什麼都不做,因爲它做的第一件事是「返回false」。 –

+0

'String str'無效JavaScript。它應該是'str'。 – Xufox

+0

你有很多非常基本的錯誤,我建議你先閱讀JavaScript。你也應該注意到這是一個非常簡單的驗證器;例如,它將在二月三十一日通過有效。 – Shaggy

回答

1

這裏是你的函數:

function isValidDateFormat(str){ 
 
    var mm, dd, yyyy; 
 
    if(str.length != 10){ 
 
    return false; 
 
    } 
 
    if(str.charAt(2) != "/" || str.charAt(5) != "/"){ 
 
    return false; 
 
    } 
 
    mm = str.substring(0,2); 
 
    dd = str.substring(3,5); 
 
    yyyy = str.substring(6,10); 
 
    if(parseInt(mm) != parseInt(mm) || 
 
    parseInt(dd) != parseInt(dd) || 
 
    parseInt(yyyy) != parseInt(yyyy) || 
 
    parseFloat(yyyy) % 1 != 0){ 
 
    return false; 
 
    } 
 
    if(parseInt(mm) < 1 || 
 
    parseInt(mm) > 12 || 
 
    parseInt(dd) < 1 || 
 
    parseInt(dd) > 31){ 
 
    return false; 
 
    } 
 
    return true; 
 
}; 
 

 
console.log("is foobarbaz valid? " + isValidDateFormat("foobarbaz")); 
 
console.log("is 09-21-1989 valid? " + isValidDateFormat("09-21-1989")); 
 
console.log("is 88/88/8888 valid? " + isValidDateFormat("88/88/8888")); 
 
console.log("is 09/21/19.9 valid? " + isValidDateFormat("09/21/19.9")); 
 
console.log("is 04/12/1967 valid? " + isValidDateFormat("04/12/1967"));

有不同的方法來檢查,如果一個字符串包含一個數字,在這裏我使用a != a趕上NaN的。

注意:這將返回true,與原來的僞代碼:

console.log(isValidDateFormat("09/21/19.9")); 

所以,你必須更改代碼,以檢查是否字符串包含只有數字(因爲,畢竟,19.9是一個號碼...)。要做到這一點的方法之一是檢查剩餘:

parseFloat(yyyy) % 1 != 0