首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >马来西亚手机号码的Regex模式

马来西亚手机号码的Regex模式
EN

Stack Overflow用户
提问于 2017-07-31 02:17:04
回答 5查看 18.2K关注 0票数 2

Regex模式^(\+?6?01)[0|1|2|3|4|6|7|8|9]\-*[0-9]{7,8}$在HTML5输入返回错误。我测试了regex,在regex101.com上和我的php代码中都没有错误。但在HTML5中,它并没有发挥应有的作用。我的代码:

代码语言:javascript
运行
复制
<input class="mdl-textfield__input" name="mobile_number" type="text" pattern="^(\+?6?01)[0|1|2|3|4|6|7|8|9]\-*[0-9]{7,8}$">

错误:

textfield.js:146模式属性值^(+?6?01)0(+?6?01)0(+?6?01)0+?1?2+2?3\4\x+7+8?9+7-9{7,8}$不是一个有效的正则表达式: Uncaught :无效正则表达式:/^(+?6?01)0+?6?2连3,4?4收6+7,8?9-9{7,8}/:无效的逃逸。

有人能帮我吗?提前感谢您的帮助。

我的测试正则表达式:https://regex101.com/r/1WsVwo/1

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-07-31 02:28:56

你的正则表达式有几个问题。导致“无效转义”错误的原因是您有\-,但是您不需要(也不应该)转义连字符。你应该拥有-。您的input的适当版本是:

代码语言:javascript
运行
复制
<input class="mdl-textfield__input" name="mobile_number" type="text" pattern="^(\+?6?01)[0-46-9]-*[0-9]{7,8}$">

这是一个演示。

在该示例中,我还将组[0|1|2|3|4|6|7|8|9]替换为更干净和更精确的[0-46-9]。在字符组(如[...])中,管道符号(|)只是另一个字符,没有特殊的含义。因此,例如,[0|1]不只是匹配01;它还匹配一个文字|字符,这不是您想要的。您可能会发现这篇文章很有帮助:参考-这个正则表达式是什么意思?

票数 6
EN

Stack Overflow用户

发布于 2021-07-02 04:47:47

为了澄清这一点,对于这个问题,@elixenide的答案就足够了。但我在regex部分确实有一些改进。首先,+60 / 60是马来西亚国家的呼叫代码,然后是9/10位数字。但只有一种号码有一个接一个国家的电话号码10位,而其他是9位数。例如:

  • 60 1112345678 (从11开始有10位数)
  • 60 121234567 (不以11开头的数字有9位数)
  • 60 151234567 (号码开始为15将不是一个有效的电话号码,它是为Digi宽带用户,如果没有错)

这就是我对正则表达式的改进

代码语言:javascript
运行
复制
pattern="^(\+?6?01)[02-46-9]-*[0-9]{7}$|^(\+?6?01)[1]-*[0-9]{8}$"

下面是指向regex101,试试看的链接

我在regex101中的示例输出

票数 5
EN

Stack Overflow用户

发布于 2021-11-15 03:56:11

进一步测试后,下面regex强制用户在破折号(-)中输入键:

代码语言:javascript
运行
复制
^(\+?6?01)[02-46-9][-][0-9]{7}$|^(\+?6?01)[1][-][0-9]{8}$

01Z-XXXXXXX011-XXXXXXXX,中输入电话号码,其中X为0至9,Z为0、2、3、4、6、7、8、9

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45406613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档