Regex模式^(\+?6?01)[0|1|2|3|4|6|7|8|9]\-*[0-9]{7,8}$
在HTML5输入返回错误。我测试了regex,在regex101.com上和我的php代码中都没有错误。但在HTML5中,它并没有发挥应有的作用。我的代码:
<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
发布于 2017-07-31 02:28:56
你的正则表达式有几个问题。导致“无效转义”错误的原因是您有\-
,但是您不需要(也不应该)转义连字符。你应该拥有-
。您的input
的适当版本是:
<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]
不只是匹配0
或1
;它还匹配一个文字|
字符,这不是您想要的。您可能会发现这篇文章很有帮助:参考-这个正则表达式是什么意思?
发布于 2021-07-02 04:47:47
为了澄清这一点,对于这个问题,@elixenide的答案就足够了。但我在regex部分确实有一些改进。首先,+60 / 60是马来西亚国家的呼叫代码,然后是9/10位数字。但只有一种号码有一个接一个国家的电话号码10位,而其他是9位数。例如:
这就是我对正则表达式的改进
pattern="^(\+?6?01)[02-46-9]-*[0-9]{7}$|^(\+?6?01)[1]-*[0-9]{8}$"
下面是指向regex101,试试看的链接
我在regex101中的示例输出
发布于 2021-11-15 03:56:11
进一步测试后,下面regex强制用户在破折号(-
)中输入键:
^(\+?6?01)[02-46-9][-][0-9]{7}$|^(\+?6?01)[1][-][0-9]{8}$
在01Z-XXXXXXX
或011-XXXXXXXX,
中输入电话号码,其中X
为0至9,Z
为0、2、3、4、6、7、8、9
https://stackoverflow.com/questions/45406613
复制相似问题