输入电话号码

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
手机号码:<input type="text" id="txt" maxlength="11" onkeypress="ttt(this,event)">
<script>
    function ttt(obj,ev){
        if(ev.keyCode<48||ev.keyCode>57){
            ev.preventDefault();
        }
    }
</script>
</body>
</html>

只能阻止键盘输入

转载于:https://www.cnblogs.com/zxy945/p/6524667.html

<think>我们需要一个程序来从键盘读取电话号码电话号码可能有不同的格式(例如,包含空格、连字符、括号等),我们可能需要清理这些格式,只保留数字。 另外,我们可能还需要验证电话号码的长度(例如,中国手机号是11位,固定电话可能不同,但这里我们假设只处理手机号,要求11位)。 步骤: 1. 使用Scanner从键盘读取输入。 2. 清理输入:移除所有非数字字符。 3. 验证清理后的字符串长度是否为11位(假设我们只处理11位手机号)。 4. 如果不符合要求,可以提示重新输入,或者输出错误信息。 注意:考虑到电话号码可能有国际区号,但这里我们只考虑简单的国内11位手机号。 代码示例:</think>### 键盘输入电话号码的处理方法 #### 完整代码实现 ```java import java.util.Scanner; import java.util.regex.Pattern; public class PhoneNumberInput { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String phoneNumber; boolean isValid = false; do { System.out.print("请输入11位手机号码: "); phoneNumber = scanner.nextLine().trim(); // 清理非数字字符 String cleanedNumber = phoneNumber.replaceAll("[^0-9]", ""); // 验证格式 if (cleanedNumber.length() != 11) { System.out.println("错误:必须输入11位数字(当前长度: " + cleanedNumber.length() + ")"); } else if (!Pattern.matches("1[3-9]\\d{9}", cleanedNumber)) { System.out.println("错误:无效的手机号格式(正确格式: 1开头,第二位3-9)"); } else { isValid = true; System.out.println("验证通过!格式化号码: " + cleanedNumber.replaceFirst("(\\d{3})(\\d{4})(\\d{4})", "$1-$2-$3")); } } while (!isValid); scanner.close(); } } ``` #### 关键处理逻辑详解 1. **输入清理** `replaceAll("[^0-9]", "")` 移除所有非数字字符(如空格、括号、连字符等),保留纯数字。 2. **长度验证** 中国手机号码必须是11位数字,通过 `cleanedNumber.length() != 11` 进行基础校验。 3. **格式验证** 使用正则表达式 `1[3-9]\\d{9}` 验证: - 首位必须是1 - 第二位必须是3-9(中国运营商号段) - 后续9位任意数字 4. **格式化输出** `replaceFirst("(\\d{3})(\\d{4})(\\d{4})", "$1-$2-$3")` 将号码格式化为 `XXX-XXXX-XXXX` 的可读形式。 #### 常见问题原因 - **用户输入额外字符**:电话号码常包含空格、连字符等分隔符 - **粘贴错误**:复制可能带入非数字字符 - **国际号码处理缺失**:本方案针对中国手机号设计 - **未验证号段有效性**:简单长度验证无法识别无效号段(如123开头的号码) #### 处理流程 1. 循环提示输入直到有效 2. 实清理非数字字符 3. 验证长度和格式规则 4. 提供明确的错误反馈 5. 通过后格式化输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值