【问题标题】:match algorithm javascript without regex [closed]没有正则表达式的匹配算法javascript [关闭]
【发布时间】:2013-12-18 03:32:48
【问题描述】:

我需要一个算法来解决这个问题 withu 使用 regEx

“字符串是否像电话号码一样遵循 123-456-7890 模式? 这个问题要求你创建一个可以接受字符串的函数,然后 确定该字符串是否遵循呈现的模式。例如,如果您通过 字符串“123-45-67”,这与模式不匹配。但是,如果你通过了 字符串“407-695-0100”,这将匹配模式。返回的唯一值 from 函数应该是一个布尔值;也就是说,如果字符串匹配 模式,否则为假”

【问题讨论】:

  • 你能展示一下你到目前为止的尝试吗?
  • 我们不会为你做作业。要求代码的问题必须表明对要解决的问题的最低理解。包括尝试过的解决方案、它们为什么不起作用以及预期的结果。
  • 你好像想让我们帮你做作业?
  • 简单,看看split()
  • Mike W - 我说我需要一个算法而不是代码,因为我不知道从哪里开始

标签: javascript regex string algorithm


【解决方案1】:

既然你想要一个算法:

function matchTele(txt, i){
    i = i || 0;
    if(txt.length != 12) return false;
    if(i == txt.length) return true;
    if(i == 3 || i == 7){
        return txt[i] == "-" ? matchTele(txt, ++i) : false;
    }
    return isNaN(parseInt(txt[i], 10)) ? false : matchTele(txt, ++i);
}

matchTele("000-000-0000")  //true
matchTele("aaa-aaa-aaaa")  //false - not a valid digit
matchTele("000-00-0000")   //false - length not match

【讨论】:

  • 你能评论第二个第 6 行和第 8 行吗?
  • @GheorgheCojocaru - 对于第 8 行,它正在检查当前字符是否为数字。如果是,则检查下一个字符是否为数字。这是一个递归函数,但是,您始终可以使用循环以相同的结果执行此操作,但我喜欢这种方式。 ;) 我会把剩下的留给你弄清楚它是如何工作的。
猜你喜欢
  • 1970-01-01
  • 2013-04-16
  • 2012-03-31
  • 2011-11-29
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多