代码之家  ›  专栏  ›  技术社区  ›  Jose Enrique Plaud

如何在不使用Regex的情况下验证Plait中的电话号码?

  •  0
  • Jose Enrique Plaud  · 技术社区  · 2 年前

    我正在用Racket的子语言Plait做一个项目,我需要验证电话号码。电话号码的格式应为 “xxx xxx xxxx” 其中区号为 "787" "939" 。但是,Plait并不直接支持正则表达式。如何在不使用regex的情况下验证这些电话号码?

    这是我当前的代码:

    #lang plait
    
    ;; Define a type for a single digit (0-9) 
    type digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    
    ;; Define a type for three digits (a sequence of 3 digits) 
    type three-digits = [digit digit digit]
    
    ;; Define a type for four digits (a sequence of 4 digits) 
    type four-digits = [digit digit digit digit]
    
    ;; Define a type for the area code (787 or 939) 
    type area-code = 787 | 939
    
    ;; Define a type for the phone number (format: xxx-xxx-XXXX)
    (define-type (phone-number) (String))
    
    ;; Function to validate the phone number
    (:: validate-phone-number (String -> Boolean))
    (define (validate-phone-number phone)
      (define phone-pattern (regexp "^\\(787\\|939\\)-[0-9]{3}-[0-9]{4}$"))
      (regexp-match? phone-pattern phone))
    
    ;; Test cases
    (validate-phone-number "787-123-4567") ;; should return #t (true)
    (validate-phone-number "939-987-6543") ;; should return #t (true)
    (validate-phone-number "800-123-4567") ;; should return #f (false)
    (validate-phone-number "787-12-4567")  ;; should return #f (false)
    

    验证电话号码时发生以下错误: enter image description here

    define:错误语法在:(define(validate phone number phone)(define phone pattern(regexp“^\(787\|939\)-[0-9]{3}-[0-9]{4}$“))(regexp匹配?电话模式电话))

    0 回复  |  直到 2 年前
    推荐文章