2011-07-17 104 views
0

我試圖解決Javascript中的一個(簡單)編程問題,我無法弄清楚如何讓它工作。我有一個程序,通過使用提示讀取文本字符串開始。在Javascript中識別字符串格式

程序輸出或者「有效名」或「無效的名稱」,這取決於輸入名稱是否符合所要求的格式,它是:

「姓,名,中間初始」

這兩個名稱都不能超過15個字符。

我知道有一個簡單的方法來做到這一點,但我似乎無法在任何地方找到它。謝謝你的幫助!

+1

這個功課? – Nicole

+0

我知道名字長於15個字符的幾個人。還有幾個沒有中間名(包括我自己)或幾個中間名。對於決定什麼是有效或無效的規則,應該給予充分的思考。 – gilly3

回答

1

我不會用\w,因爲它包含的字符,如_和九數字。考慮以下測試中的正則表達式:

<script> 
    if ("Nami, Guilherme, P".match(/^[A-Z][a-z]{1,14}, [A-Z][a-z]{1,14}, [A-Z]\.?$/)) { 
     alert("Valid"); 
    } 
    else { 
     alert("Invalid"); 
    } 
</script> 
+0

我會讓它不區分大小寫,並允許更多的字符。考慮像麥當勞和奧利裏這樣的名字。 – gilly3

+0

更不用說像José,Noëlle,ゆきひろ和أسامة這樣的名字...... –

1

使用正則表達式:

/^\w{0,15}, \w{0,15}, \w{0,15}\.?$/.test(name) 
+2

現在他有兩個問題 –

+0

改變了最後一部分是一個單一的數字(因爲它是inital),並且可以有一個可選的點陣字符 –

+1

我沒有看到要求爲5個字符的鉛丹的名字和姓氏OP的要求。 – RobG

1

這應該工作(在我的測試工作):

// assuming there are no commas in fields 
var string = "last name, first name, middle initial", 
string_array = string.split(', '), 
length = string_array.length; 

for (i = 0; i < length; i++) { 
    // changing string to 'blah, firrrrrsssttt nammme, bbbbb' outputs the alert message 
    if (string_array[i].length > 15) alert('None of these can be more than 15 characters long. ' + string_array[i] + ' is too long'); 
}