我有一个用于电话验证的正则表达式,它应该接受"空格"one_answers"+">
例如+212 0780526395
这是我的正则表达式:+[0-9]\s*,但它不工作
你很接近,如果+
必须只在开头,并且让数字之间的空格:
+[0-9s]+
一个更好的途径是:
+[0-9]+[0-9s]*
强制在+符号后至少有一个数字。
您可以使用这个:
(.*)1?-?.?(?d{3}[-).s]?d{3}[-.s]?d(.*)
摩擦测试
您的正则表达式+[0-9]s*
:
+
与+
匹配[0-9]
匹配单个数字s*
匹配0个或多个空白字符(空格、换行符、制表符等(
因此您的正则表达式匹配'+8'、'+8'和'+8 ',即一个加号后面跟着一个数字后面跟着任意数量的空白字符。
我假设+
字符只有在位于所有数字之前时才有效。所以使用:
^ *+?((?: *d){10}) *$
^
匹配字符串的开头*
匹配0个或多个空格+?
匹配可选的+
字符((?: *d){10})
匹配捕获组1中出现的10次(见下文(0个或多个空格后面跟一个数字*
匹配0个或多个空格$
匹配字符串的末尾
上述正则表达式中的键子正则表达式是((?: *d){10})
,它要求输入恰好包含10位数字。我只是随便选了数字10。例如,要允许7到10位数字的范围,请使用((?: *d){7,10})
。或者,要指定需要一个或多个数字,请使用((?: *d)+)
。
锚^
和$
需要确保输入仅包含可接受的输入。
参见Regex Demo