我有一个正则表达式来验证电话号码。它应仅允许+
,(
,)
和-
符号。现在一切正常,除了2个问题。正则表达式应仅在开头时允许+
符号而不在中间的任何位置。
其他符号,即:-
,(
和)
符号不应该一个接一个地出现。
使用的正则表达式如下
/^(?=.*?[1-9])[0-9-()+ ]+$/
任何修复此问题的建议都会有所帮助。
答案 0 :(得分:0)
此代码只允许您在开头输入+和 - 。
<!DOCTYPE html>
<html>
<head>
<title>Modifiers</title>
</head>
<body>
<input type="text" name="mob" id="demo">
<input type="submit" name="submit" onclick="myfunc()">
<script type="text/javascript">
function myfunc(){
var movV= document.getElementById('demo').value;
var mob = movV.replace(/[?:+ | ?:-]\d/, '');
if (mob != movV) {
alert("true");
}
else if (mob == movV) {
alert("false");
}
}
</script>
</body>
</html>
答案 1 :(得分:0)
正如你所说,现在一切正常,除了2个问题,你可以在字符串的开头加一个可选的加号:
\+?
如果你的意思是
&#34;其他符号,即:
-
,(
和)
符号不应出现 一个又一个&#34;
((
或)))
或----
不应该发生,那么您可以使用lookarounds来声明-
,(
和)
符号不应该一个接一个地出现:
(?!.*([-()])(?=\1))
<强>解释强>
(?!
.*
([-()])
(?=
\1
)
)
你的正则表达式如下:
^\+?(?!.*([-()])(?=\1))(?=.*?[1-9])[0-9-()+ ]+$