【问题标题】:Identifying string format in Javascript在Javascript中识别字符串格式
【发布时间】:2011-07-17 04:26:28
【问题描述】:

我正在尝试用 Javascript 解决一个(简单的)编程问题,但我不知道如何让它工作。我有一个程序,它首先使用提示符读取文本字符串。

程序输出“有效名称”或“无效名称”,具体取决于输入名称是否符合要求的格式,即:

“姓,名,中间名首字母”

其中两个名称都不能超过 15 个字符。

我知道有一种简单的方法可以做到这一点,但我似乎无法在任何地方找到它。感谢您的帮助!

【问题讨论】:

  • 我认识几个名字超过 15 个字符的人。还有几个没有中间名(包括我自己)或几个中间名。值得对确定什么是有效的或无效的规则进行大量思考。

标签: javascript string search string-formatting prompt


【解决方案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>

【讨论】:

  • 我会使其不区分大小写并允许更多字符。考虑一下像 McDonald 和 O'Leary 这样的名字。
【解决方案2】:

使用这个正则表达式:

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

【讨论】:

  • 将最后一部分更改为单个数字(因为它是开头),并且可以有一个可选的点字符
  • 我在 OP 的要求中没有看到名字和姓氏至少 5 个字符的要求。
  • 快! 1分钟内你能想出多少个4字以内的常用名字?杰克吉尔约翰乔恩汤姆迪克汉克鲍勃乔伊李伊万......我有一个同事,他的实际法定名字只是“T”。
  • 好吧,好吧,别打我;)。更新了答案。
【解决方案3】:

这应该有效(在我的测试中有效):

// 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');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多