Regex模式验证js



我有一个用于电话验证的正则表达式,它应该接受"空格"one_answers"+">

例如+212 0780526395

这是我的正则表达式:+[0-9]\s*,但它不工作

你很接近,如果+必须只在开头,并且让数字之间的空格:

+[0-9s]+

一个更好的途径是:

+[0-9]+[0-9s]*

强制在+符号后至少有一个数字。

您可以使用这个:

(.*)1?-?.?(?d{3}[-).s]?d{3}[-.s]?d(.*)

摩擦测试

您的正则表达式+[0-9]s*:

  1. ++匹配
  2. [0-9]匹配单个数字
  3. s*匹配0个或多个空白字符(空格、换行符、制表符等(

因此您的正则表达式匹配'+8'、'+8'和'+8 ',即一个加号后面跟着一个数字后面跟着任意数量的空白字符。

我假设+字符只有在位于所有数字之前时才有效。所以使用:

^ *+?((?: *d){10}) *$
  1. ^匹配字符串的开头
  2. *匹配0个或多个空格
  3. +?匹配可选的+字符
  4. ((?: *d){10})匹配捕获组1中出现的10次(见下文(0个或多个空格后面跟一个数字
  5. *匹配0个或多个空格
  6. $匹配字符串的末尾

上述正则表达式中的键子正则表达式是((?: *d){10}),它要求输入恰好包含10位数字。我只是随便选了数字10。例如,要允许7到10位数字的范围,请使用((?: *d){7,10})。或者,要指定需要一个或多个数字,请使用((?: *d)+)

^$需要确保输入仅包含可接受的输入。

参见Regex Demo

最新更新