Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UItextField电话号码格式_Ios_Uitextfield_Nsregularexpression - Fatal编程技术网

Ios UItextField电话号码格式

Ios UItextField电话号码格式,ios,uitextfield,nsregularexpression,Ios,Uitextfield,Nsregularexpression,我有三个文本字段,分别是家庭电话、工作电话和手机。我需要对这些字段进行验证和数字格式化。下面显示的是情况 家庭电话和工作电话文本字段不应接受超过10位且少于8位的数字。字段应只接受数字。数字的格式应为 xxxx xxxx(如果为8位数字) xx xxxx xxxx(如果是10位数字) “移动电话号码”字段不应接受超过10位数字。字段应仅接受数字。数字的格式应为 xxxx xxx xxx xxx 我不知道如何做到这一点。请帮帮我。我想你可以通过以下方法实现这一点: 在uitextfield中捕获文

我有三个文本字段,分别是家庭电话、工作电话和手机。我需要对这些字段进行验证和数字格式化。下面显示的是情况

家庭电话和工作电话文本字段不应接受超过10位且少于8位的数字。字段应只接受数字。数字的格式应为 xxxx xxxx(如果为8位数字) xx xxxx xxxx(如果是10位数字)

“移动电话号码”字段不应接受超过10位数字。字段应仅接受数字。数字的格式应为 xxxx xxx xxx xxx


我不知道如何做到这一点。请帮帮我。

我想你可以通过以下方法实现这一点:

  • 在uitextfield中捕获文本更改事件。根据需要的格式,在4个字符后添加破折号,在7个字符后添加破折号,依此类推
  • 使用正则表达式验证带破折号的整个数字字符串。 (例如:对于XXXXXXXX格式,使用“[0-9]{4}-[0-9]{4}”)

  • 有点晚了,但它可能会帮助其他人,将UITextfield文本格式化为XXX-XXX-XXXX格式

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    
            var number = textField.text  as NSString? ?? ""
            number = number.replacingCharacters(in: range, with: string) as NSString
            number = number.replacingOccurrences(of: "-", with: "") as NSString
    
            if (number.length > 10) {
                return false;
            }
            self.resetBtnState(numberLength: number.length)
            var groupSize = 3
            let separator = "-"
            if string.characters.count == 0 {
                groupSize = 5
            }
            let numformatter = NumberFormatter()
            numformatter.groupingSeparator = separator
            numformatter.groupingSize = groupSize
            numformatter.usesGroupingSeparator = true
            numformatter.secondaryGroupingSize = 3
            if var number = textField.text, string != "" {
                number = number.replacingOccurrences(of: separator, with: "")
                if let doubleVal = Double(number) {
                    let requiredString = numformatter.string(from: NSNumber.init(value: doubleVal))
                    textField.text = requiredString
                }
            }
            return true
        }
    

    您是否计划自己添加破折号,或者用户会这样做?破折号应该自动添加检查:您是否只计划在一个国家/地区销售您的应用程序?您可能需要考虑支持更多的格式。让生活更简单,在添加短线之前验证。