2011-07-07 76 views
3

我希望有人可以幫助我一點驗證,我將表單輸入的值作爲一個字符串。我需要根據一些規則來驗證它,所以它可以成爲表名。我可以單獨做,但我不知道如何把它們放在一起。輸入(tempName)需要:Javascript驗證

  1. 已更換用下劃線空間
  2. 沒有特殊字符
  3. 少於25個字符

1.

newName = tempName.replace(' ', '_') 

2 。

var regex=/^[0-9A-Za-z]+$/; //^[a-zA-z]+$/ 

    if(regex.test(tempName)){ 
    tempName = newName 
    return true; 
    } 

    else { 
    alert("Only letters + numbers allowed - no special characters or spaces.") 
    return false; 
    } 

3.

if (tempName.length < 25) { 
    newName = tempName 
    } 

    else { 
    newName = tempName.substr(0,25);  
    } 

道歉問這麼簡單的東西,但我還沒有真正用JavaScript正確工作了幾年,我有嵌套的麻煩,如果報表和設置條件。

幫助將不勝感激。

謝謝。

回答

1

那麼你可以放在一起的第2位。

newName = tempName.replace(" ", "_").replace(/\W/g, ""); 

但是然後我會檢查替換後的剩餘字符串的長度,以確保我沒有得到索引超出範圍。

if(newName.length > 25) { 
    newName = newName.substring(0, 25); 
} 
+0

爲什麼用一個空字符串替換一個有效字符串的實例,如果它錯了,什麼也不做?請糾正第一個。 – Ryan

+0

因爲他沒有要求做任何事情,如果輸入不符合他要求準備成爲表名的標準。 – kasdega

+0

他不像字符串操作那樣有效。 – kasdega

5
if(/^\w{,25}$/.test(name = name.replace(/\s/g, '_'))) { 
    // It's valid. 
} 

可能是你想要的。

編輯:如果要截斷爲25個字符,它是:

if(/^\w+$/.test(name = name.replace(/\s/g, '_').substring(0, 25))) { 
    // It's valid. 
}
+0

這是否設置字符串的長度爲<= 25?或者它只是檢查,看看是否該字符串<= 25? – kasdega

+0

@kasdega:只是做檢查。不過,我會添加一個不同的解決方案來解決問題。 – Ryan

+0

謝謝。我認爲我正在學習關於正則表達式的新東西 – kasdega

1

聽起來像只需要將大部分內容放在JavaScript功能塊中。

function validateTableName(tempName) 
{ 
var newName=''; 
your code here... 
return newName; 
} 

HTH ...

+0

爲什麼要低估我的迴應?我的回答很清晰,簡潔。我會授予它不那麼優雅,但它解決了這個問題。另外,@ minitech響應不能解決特殊字符問題。 – Taersious

+0

爲了將來的參考,當我沒有在這裏發佈時,我無法獲得像這樣的提示,我不這麼認爲。無論如何,downvote是因爲這根本不是問題。把他的代碼放在一起,它不起作用。是的,我的迴應確實解決了特殊字符問題,仔細觀察。 – Ryan