我在Google上搜索了电话号码正则表达式验证,但未能根据我的要求使其正常工作。
基本上,我有三组不同的前缀规则:
之后我可以允许像1888GOSUPER这样的字母或类似的东西(这将属于第二个条件)
这是我到目前为止所做的,但我不确定我是否涵盖了所有内容:
var reg10 = /^[2-9]{3}[a-z0-9]+$/i;
var reg11 = /^[1-9]{4}[a-z0-9]+$/i;
var reg12plus = /^[0-9]{7}[a-z0-9]+$/i;
答案 0 :(得分:3)
这可以由一个正则表达式处理(包括您的检查长度,如其他人所建议的)。可能比这更简洁,但我觉得这在你特定的3个前缀要求的上下文中更具可读性:
^(?:[2-9]{3}[a-z0-9]{7})$|^(?:[1-9]{4}[a-z0-9]{7})$|^(?:[0-9]{7}[a-z0-9]{5,})$
基本上通过“交替”|
这可以稍微“标准化”,不会“破坏”意图的清晰度,通过对整个表达式进行分组,然后用开始/结束锚定(而不是在每个选项中重复这些,如上所述)。虽然这会产生类似的长度规则,但是当我们添加额外的非捕获组时:
^(?:(?:[2-9]{3}[a-z0-9]{7})|(?:[1-9]{4}[a-z0-9]{7})|(?:[0-9]{7}[a-z0-9]{5,}))$