正则表达式允许+仅在开始时

时间:2018-01-05 06:09:59

标签: javascript regex

我有一个正则表达式来验证电话号码。它应仅允许+()-符号。现在一切正常,除了2个问题。正则表达式应仅在开头时允许+符号而不在中间的任何位置。 其他符号,即:-()符号不应该一个接一个地出现。

使用的正则表达式如下

/^(?=.*?[1-9])[0-9-()+ ]+$/

任何修复此问题的建议都会有所帮助。

2 个答案:

答案 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))(?=.*?[1-9])[0-9-()+ ]+$