axure中手机号输入框需配置五重校验:一、设电话类型并限长11位;二、文字改变时自动清除非数字字符;三、失去焦点时校验长度、首位为1、第二位为3-9;四、用正则/^1[3-9]\d{9}$/精准匹配;五、截取前三位比对号段白名单。

如果您在Axure中设计输入框时发现用户可随意输入字母、符号或超长字符串,导致原型验证失效,则可能是未正确配置数字与手机号格式的双重校验逻辑。以下是解决此问题的步骤:
一、设置输入框类型并启用长度限制
通过Axure内置的“输入类型”属性可初步约束输入内容,结合最大长度设定,从UI层过滤无效输入,减少后续逻辑负担。
1、选中目标文本框元件,在右侧“属性”面板中找到“输入类型”选项。
2、点击下拉菜单,选择电话类型,该类型会自动禁用部分非数字按键响应。
3、在“最大长度”字段中输入11,确保用户无法输入超过11位的字符。
4、在“提示信息”中填写请输入手机号,作为初始占位提示。
二、使用文字改变时事件进行实时数字校验
该方法在用户每输入一个字符时即触发判断,可即时拦截非数字输入,提升交互反馈速度。
1、选中文本框,打开“交互”面板,点击新建交互,选择文字改变时事件。
2、点击“添加条件”,在条件编辑器中输入表达式:[[!LVAR1.isNumber()]],其中LVAR1为当前文本框的变量引用。
3、在动作区选择设置文本,目标为该文本框自身,值设为[[LVAR1.replace(/[^0-9]/g, '')]],实现自动清除非数字字符。
4、再添加一个动作:若文本框内容为空,则保持空白;否则保留清洗后的纯数字字符串。
三、利用失去焦点事件执行完整手机号结构验证
该方法在用户完成输入并移出焦点时启动复合判断,覆盖长度、首位、号段等关键规则,确保号码符合国内运营商规范。
1、仍选中文本框,在交互面板中点击新建交互,选择失去焦点时事件。
2、添加第一个条件:判断字符串长度是否等于11,表达式为[[LVAR1.length == 11]]。
3、添加第二个条件:判断首字符是否为“1”,表达式为[[LVAR1.charAt(0) == '1']]。
4、添加第三个条件:判断第二位是否属于有效号段数字(3/4/5/7/8/9),表达式为[[['3','4','5','7','8','9'].indexOf(LVAR1.charAt(1)) != -1]]。
5、在满足全部三个条件的前提下,执行动作:隐藏提示标签,并将输入框边框颜色设为绿色以示通过。
四、嵌入正则表达式实现一次性精准匹配
借助Axure支持的JavaScript风格正则语法,可在单个条件中完成对手机号全格式的原子级校验,避免多条件嵌套复杂度。
1、在“失去焦点时”交互中新增一个case,点击“添加条件”。
2、在条件表达式栏中直接输入:[[LVAR1.match(/^1[3-9]\d{9}$/) != null]],该正则严格匹配以1开头、第二位为3–9、总长11位的数字串。
3、若匹配成功,执行动作:显示绿色对勾图标,并设置提示标签文本为格式正确。
4、若匹配失败,执行另一分支动作:显示红色感叹号图标,并设置提示标签文本为手机号格式错误。
五、结合变量与字符串截取验证主流号段
针对需区分具体运营商号段的高保真原型,可通过截取前三位并与已知号段列表比对,增强验证可信度。
1、在“失去焦点时”交互中新增条件组,使用函数获取前三位:[[LVAR1.substring(0,3)]]。
2、构建号段白名单数组:['130','131','132','133','134','135','136','137','138','139','145','147','150','151','152','153','155','156','157','158','159','170','171','172','173','175','176','177','178','180','181','182','183','184','185','186','187','188','189','198','199']。
3、编写判断表达式:[[['130','131',...,'199'].indexOf(LVAR1.substring(0,3)) != -1]](省略中间号段以保持简洁)。
4、当表达式返回true时,触发成功状态样式变更;否则触发错误提示并聚焦回输入框。











