2011-07-17 60 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'); 
}