javascript - 正则表达式支持免费电话号码以及阿联酋号码
问题描述
我有一个验证阿联酋数字的正则表达式,例如:00971585045336 这是正则表达式:
/00971(?:50|51|52|53|54|55|56|57|58|59|2|3|4|6|7|9)\d{7}$/
我需要添加对免费电话号码的支持,例如: 0097180038249953或0097180022988
我不擅长正则表达式,所以我需要帮助才能使它成为可能。提前致谢。
解决方案
您可以使用以下正则表达式,假设免工具号码格式为 00971800,后跟 5 位或 8 位数字。您的原始正则表达式已使用字符类进行了简化。测试显示 4 个有效数字,然后是无效数字:
const regex = /^00971((5\d|[234679])\d{7}|800(\d{5}|\d{8}))$/;
[
'00971581234567',
'0097171234567',
'0097180012345',
'0097180012345678',
'0097158123456',
'009715812345678',
'009717123456',
'00971712345678',
'00971800123456',
'009718001234567',
].forEach((str) => {
let valid = regex.test(str);
console.log(str + ' ==> ' + valid);
});
输出:
00971581234567 ==> true
0097171234567 ==> true
0097180012345 ==> true
0097180012345678 ==> true
0097158123456 ==> false
009715812345678 ==> false
009717123456 ==> false
00971712345678 ==> false
00971800123456 ==> false
009718001234567 ==> false
解释:
^
- 字符串的开始00971
- 期望文字(
- 起始组,用于逻辑或(
- 起始组,用于逻辑或5\d
- 期望 a5
,后跟一个数字|
- 或者[234679]
- 具有允许数字的单个字符的字符类
)
- 小组结束\d{7}
- 7 位数|
- 或者800
- 文字文本(
- 起始组,用于逻辑或\d{5}
- 5 位数|
- 或者\d{8}
- 8 位数字
)
- 小组结束
)
- 小组结束$
- 字符串结束
推荐阅读
- linux-kernel - 将新功能移植到旧内核版本
- polygon - 如何在 geopandas 中获取 shapefile 多边形的 UTM 区域
- python - 带有 inplace=True 的 Pandas fillna 更改所有等于它应该操作的数据帧
- c# - 检查gridview Asp.net中是否存在数据
- airflow - 如何使`all_done`触发规则与气流1.8中的*-祖父节点一起工作?
- javascript - 单击后退按钮时,Ajax 分页过滤器不起作用
- java - 在java中解码一个加密的字符串
- php - 解决 PHP 致命错误:在错误日志中调用成员函数 prepare() on null
- sql - 错误:OR 的参数不能返回一个集合
- c - 在C中的char数组中删除相同的连续行